typescript - 如何在 Ionic 2 应用中终止 Google OAuth 会话(通过 Firebase)?
我的 Ionic 2 应用通过 Firebase 使用 Google 身份验证,并且我在应用中有一个注销按钮调用 Firebase 的 unauth() 方法,但它只取消对 Firebase 引用的身份验证,并不会终止 Google OAuth 会话。
在按下登出按钮并再次按下登录按钮后,用户会自动登录(使用之前的 OAuth 会话),而我不希望这样。
我需要我的注销按钮也能终止 Google OAuth 会话,这样当再次按下登录按钮时,它会再次要求输入用户名和密码。我该如何实现这一点?
这是我的代码:
home.ts
import {Page} from 'ionic-angular';
@Page({
templateUrl: 'build/pages/home/home.html'
})
export class HomePage {
firebaseUrl: string;
ref: Firebase;
constructor() {
this.firebaseUrl = 'https://xxx.firebaseio.com';
this.ref = new Firebase(this.firebaseUrl);
}
login() {
this.ref.authWithOAuthPopup("google", (error, authData) => {
if (error) {
console.log("Login Failed!", error);
} else {
console.log("Authenticated successfully with payload:", authData);
}
});
}
logout() {
this.ref.unauth();
console.log('Logout button clicked');
}
}
首页.html
<ion-navbar *navbar>
<ion-title>
Home
</ion-title>
</ion-navbar>
<ion-content class="home">
<button (click)="login()">Sign in with Google</button>
<button (click)="logout()">Logout</button>
</ion-content>
答案#1
我找到的唯一有效解决方案是向 https://accounts.google.com/logout 发起一个 JSONP 异步请求
这是一个“肮脏”的技巧,会向控制台抛出错误,但找不到其他可行的解决方案。如果有人知道更好的方法,请告诉我。