AngularFire2 - 使用来自 Google Auth 的访问令牌用于 Google API

AngularFire2 - using access token from Google Auth for Google APIs

Google 身份验证通过 AngularFire2 returns Firebase 访问令牌,但 不是 使用 Google 访问令牌在 Google 个 API 上。从 AngularFire2 身份验证获取访问令牌的正确方法是什么?

Angular: 2.4.9

Firebase: 3.5.2

Angular火:2.0.0-beta.8

这是一个 plunkr:

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 访问令牌的地方。但是在第一次登录时,我收到此错误:

{
error: {
code: 403,
message: "Request had insufficient authentication scopes.",
status: "PERMISSION_DENIED"
}
}

我知道这不应该发生,因为我尝试使用严格的 Firebase 进行相同的设置(没有 AngularFire2),在这个例子中:

https://embed.plnkr.co/zxOfRZ1PDDb7ee5qzIKW/

那么在 AngularFire 和 Firebase 之间共享身份验证令牌是否存在问题?有人有这个工作的例子吗?

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

我最终使用了相同的方法,看来您需要手动使用 Google API 的 Javascript 客户端,并使用该凭据通过 Firebase 登录.