AngularFire2 - 使用Google Auth for Google API的访问令牌

时间:2017-03-22 23:40:39

标签: angularjs angular authentication firebase angularfire2

通过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令牌是否存在问题?有没有人有这个工作的例子?

1 个答案:

答案 0 :(得分:1)

在StackOverflow上发现了类似的问题:

Using Firebase Auth to access the Google Calendar API

我最终使用了相同的方法,您似乎需要手动使用Google API的Javascript客户端,并使用该凭据登录Firebase。