通过AngularFire2进行Google身份验证会返回Firebase访问令牌,但不用于Google API的Google访问令牌。从AngularFire2 auth获取访问令牌的正确方法是什么?
Angular:2.4.9
Firebase:3.5.2
AngularFire:2.0.0-beta.8
这是一个傻瓜:
http://plnkr.co/edit/qIbtcp?p=preview
你会在构造函数中注意到:
constructor(af: AngularFire, public auth$: AngularFireAuth, public http:Http) {
auth$.subscribe((state: FirebaseAuthState) => {
if(state){
this.signedIn = true
}
});
firebase.auth()
.getRedirectResult()
.then((result) => {
console.log('result', result);
if (result.credential) {
// This gives you a Google Access Token.
var token = result.credential.accessToken;
console.log('token',token)
this.getPeople(token)
.subscribe(
people => console.log('people',people),
error => console.log(error));
}
var user = result.user;
})
.catch(err => console.log(err));
}
我打电话给firebase.auth()是我尝试获取Google Access令牌的地方。但是,首次登录时,我收到此错误:
{
error: {
code: 403,
message: "Request had insufficient authentication scopes.",
status: "PERMISSION_DENIED"
}
}
我知道不应该发生,因为我在严格的Firebase(没有AngularFire2)中尝试了相同的设置,在这个例子中:
https://embed.plnkr.co/zxOfRZ1PDDb7ee5qzIKW/
在AngularFire和Firebase之间共享auth令牌是否存在问题?有没有人有这个工作的例子?
答案 0 :(得分:1)
在StackOverflow上发现了类似的问题:
Using Firebase Auth to access the Google Calendar API
我最终使用了相同的方法,您似乎需要手动使用Google API的Javascript客户端,并使用该凭据登录Firebase。