如何识别通过Firebase进行的现有Google OAuth身份验证并在Angular 2中执行Google Directory API请求?

时间:2016-04-12 09:06:25

标签: firebase angular google-oauth google-admin-sdk google-directory-api

我想使用现有的身份验证,并能够使用相同的身份验证来执行对Google Directory API的get请求。这是我目前的代码:

login() {
    this.firebaseRef = new Firebase('https://xxx.firebaseio.com');
    this.firebaseRef.authWithOAuthPopup("google", (error, authData) => {
        if (error) {
            console.log("Login Failed!", error);
        } else {
            console.log("Authenticated successfully with payload:", authData);
        }
    }, {
            scope: "https://www.googleapis.com/auth/admin.directory.user.readonly"
    });
}

getData() {
    // TO-DO
    // Recognise existing OAuth and perform a GET request to
    // https://www.googleapis.com/admin/directory/v1/users?domain=nunoarruda.com
}

2 个答案:

答案 0 :(得分:1)

您可以利用getAuth实例上的firebaseRef方法。这样的事情:

getData() {
  var authData = this.firebaseRef.getData();
  var provider = authData.provider;
  // In your case provider contains "google"
}

请参阅此文档:https://www.firebase.com/docs/web/api/firebase/getauth.html

答案 1 :(得分:1)

我找到了解决方案。我需要在http请求标头中使用当前访问令牌来获取GET请求。

import {Http, Headers} from 'angular2/http';

getData() {
    // get access token
    let authData = this.firebaseRef.getAuth();
    let oauthToken = authData.google.accessToken;
    console.log(oauthToken);

    // set authorization on request headers
    let headers = new Headers();
    headers.append('Authorization', 'Bearer ' + oauthToken);

    // api request
    this.http.get('https://www.googleapis.com/admin/directory/v1/users?domain=nunoarruda.com',{headers: headers}).subscribe((res) => {
        console.log(res.json());
    });
}