diff --git a/README.MD b/README.MD
index e9dc094..9d1fd9d 100755
--- a/README.MD
+++ b/README.MD
@@ -118,9 +118,41 @@ export class SigninComponent implements OnInit {
}
```
+In `the profile component,the page After login you give your user the access profile.component.ts`,
+```javascript
+public unlinkaccount(socialPlatform : string) {
+ let socialPlatformProvider;
+ if(socialPlatform === "facebook"){
+ socialPlatformProvider = FacebookLoginProvider.PROVIDER_ID;
+ socialPlatformProvider = GoogleLoginProvider.PROVIDER_ID;
+ this.socialAuthService.revokeAccess(this.userid).then(
+ (revokeres) => {
+ console.log(revokeres);
+ //the url to redirect after revocation
+ this.router.navigate(['/login',{unlinkmessage:'You have successfully unlinked your account'}]);
+ }
+ );
+ }else if(socialPlatform === "google"){
+ socialPlatformProvider = GoogleLoginProvider.PROVIDER_ID;
+ this.socialAuthService.revokeAccess(this.userid).then(
+ (revokeres) => {
+ console.log(revokeres);
+ //the url to redirect after revocation
+ this.router.navigate(['/login',{unlinkmessage:revokeres}]);
+ }
+ );
+ }
+ }
+```
+In `profile.component.html`
+```html
+
+Unlink {{provider}} Account
+
-
-
+
+
+```
In `signin.component.html`,
```html
diff --git a/src/auth.service.ts b/src/auth.service.ts
index 0b9ed80..1adca23 100755
--- a/src/auth.service.ts
+++ b/src/auth.service.ts
@@ -82,5 +82,23 @@ export class AuthService {
}
});
}
-
+ revokeAccess(userid:string): Promise {
+ var _this = this;
+ return new Promise(function (resolve, reject) {
+ if (_this._user && _this._user.provider) {
+ let /** @type {?} */ providerId = _this._user.provider;
+ let /** @type {?} */ providerObject = _this.providers.get(providerId);
+ providerObject.revokeAccess(userid).then(function (revokeres) {
+ _this._user = null;
+ _this._authState.next(null);
+ resolve(revokeres);
+ }).catch(function (err) {
+ _this._authState.next(null);
+ });
+ }
+ else {
+ reject(AuthService.LOGIN_PROVIDER_NOT_FOUND);
+ }
+ });
+ }
}
diff --git a/src/entities/base-login-provider.ts b/src/entities/base-login-provider.ts
index 1b18bae..1bfb0a4 100755
--- a/src/entities/base-login-provider.ts
+++ b/src/entities/base-login-provider.ts
@@ -7,7 +7,7 @@ export abstract class BaseLoginProvider implements LoginProvider {
abstract initialize(): Promise;
abstract signIn(): Promise;
abstract signOut(): Promise;
-
+ abstract revokeAccess(userid:string):Promise;
loadScript(obj: LoginProviderClass, onload: any): void {
if (document.getElementById(obj.name)) { return; }
let signInJS = document.createElement('script');
diff --git a/src/entities/login-provider.ts b/src/entities/login-provider.ts
index ae0fb38..f84fd54 100755
--- a/src/entities/login-provider.ts
+++ b/src/entities/login-provider.ts
@@ -4,5 +4,6 @@ export interface LoginProvider {
initialize(): Promise;
signIn(): Promise;
signOut(): Promise;
+ revokeAccess(userid:string):Promise;
}
diff --git a/src/providers/facebook-login-provider.ts b/src/providers/facebook-login-provider.ts
index e5271fd..d7a8e57 100755
--- a/src/providers/facebook-login-provider.ts
+++ b/src/providers/facebook-login-provider.ts
@@ -69,5 +69,11 @@ export class FacebookLoginProvider extends BaseLoginProvider {
});
});
}
-
+ revokeAccess(userid:string): Promise{
+ return new Promise(function (resolve, reject) {
+ FB.api(`/${userid}/permissions`,'DELETE',{},function (response) {
+ resolve('Account Unlink success');
+ });
+ });
+ }
}
diff --git a/src/providers/google-login-provider.ts b/src/providers/google-login-provider.ts
index 366ae6a..c5a9060 100755
--- a/src/providers/google-login-provider.ts
+++ b/src/providers/google-login-provider.ts
@@ -68,5 +68,18 @@ export class GoogleLoginProvider extends BaseLoginProvider {
});
});
}
+ revokeAccess(userid:string): Promise{
+ var _this = this;
+ return new Promise(function (resolve, reject) {
+ _this.auth2.disconnect().then(function (err) {
+ if (err) {
+ reject(err);
+ }
+ else {
+ resolve('Google account Unlink success');
+ }
+ });
+ });
+ }
}