AngularFire身份验证访问Google AccessToken

时间:2017-03-26 22:46:48

标签: angular firebase-authentication angularfire2

使用Firebase Web SDK,您可以按如下方式引用AccessToken:

const provider = new auth.GoogleAuthProvider();
provider.addScope('https://www.googleapis.com/auth/plus.login');

firebase.auth().signInWithPopup(provider).then(function(result) {
  // This gives you a Google Access Token. You can use it to access the Google API.
  var token = result.credential.accessToken;
  // The signed-in user info.
  var user = result.user;
  // ...
});

您随后可以使用token获取有关您用户的更多信息;例如:

public getFirstName(token: string): Observable<string> {
  const url = 'https://www.googleapis.com/oauth2/v3/userinfo?access_token=' + token;

  return this.http.get(url).map(response => {
    return response.json().given_name;
  });
}

问题:如何使用AngularFire2 protocol检索此访问令牌?

public loginGoogle() {
  this.af.auth.login().then((authState) => {
    authState.WHERE_IS_IT; // <<<----- 
  })
}

提前致谢! //凯文

1 个答案:

答案 0 :(得分:1)

implementation of login调用身份验证后端(SDK)并将收到的UserCredential传递给authDataToAuthState - credential作为providerData传递。< / p>

authDataToAuthState有一个switch语句,它将credential映射到依赖于提供者的属性。对于google.com,凭据应存储在google属性中:

case 'google.com':
  authState.google = providerData; // i.e. the credential
  authState.provider = AuthProviders.Google;
  break;

请注意,将从AngularFire2中删除发布候选版本的身份验证方法。有关here的讨论。一旦删除,SDK将直接用于登录等 - 希望这可以减少混乱。