2017-04-26 19 views
1

OAuth2 APIを使用して、Google API Node.jsクライアントを使用してログインしているユーザーの名前を取得しようとしています。OAuth2 Google APIからメールとプロフィール情報を取得する方法は?

この例では、ログインを管理していましたが、プロファイル情報を取得する方法が見つかりませんでした。

私はPeople APIもPlus APIも使用していません。私が知る限り、OAuth2にはhttps://www.googleapis.com/auth/userinfo.profileが含まれています。これはタスクに十分なはずです。

私は多分それはあまりにも古いですが、いくつかの同様の質問を見て、この1のソリューションを試みたが、それはうまくいきませんでしたしている(?)

With the npm package googleapis how do I get the user's email address after authenticating them?

のGoogleスプレッドシートのような他のAPIのを見て、それが可能ですこのように、その機能を呼び出すには:

var google = require('googleapis'); 
var sheets = google.sheets('v4'); 

... 

sheets.spreadsheets.values.get({ 
    auth: auth, 
    spreadsheetId: file_id, 
    range: my_ranges, 
    }, function(err, response){ 
     ... 
    } 
); 

しかし、のOAuth2がそのように動作していないようだ...

答えて

2

あなたはUできますse node.jsのクイックスタート詳細情報はhttps://developers.google.com/gmail/api/quickstart/nodejsです。クイックスタートのサンプルスクリプトを使用すると、OAuth2でアクセストークンを取得し、電子メールとユーザープロファイルを取得できます。

それはクイックスタートのサンプルを実行する前に、前提条件、ステップ1とステップ2

あなたは次のようにlistLabels(auth)を変更することで使用できることを確認してください。スコープはhttps://www.googleapis.com/auth/gmail.readonlyです。

スクリプト:

var gmail = google.gmail({ 
     auth: auth, 
     version: 'v1' 
}); 

gmail.users.getProfile({ 
    auth: auth, 
    userId: 'me' 
    }, function(err, res) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log(res); 
    } 
}); 

gmail.users.messages.get({ 
    'userId': 'me', 
    'id': 'mail ID', 
    'format': 'raw' 
}, function (err, res) { 
    console.log(new Buffer(res.raw, 'base64').toString()) 
}); 
  • gmail.users.getProfileは、ユーザプロファイルを取得します。
  • gmail.users.messages.getがメールを取得します。

ご質問が誤解された場合は、申し訳ありません。

を追加しました:

スクリプトを次のように上記変更してください。スコープはhttps://www.googleapis.com/auth/userinfo.profileです。

スクリプト:

var oauth2 = google.oauth2({ 
     auth: auth, 
     version: 'v2' 
}); 

oauth2.userinfo.v2.me.get(
function(err, res) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log(res); 
    } 
}); 

結果:

{ 
    id: '#####', 
    name: '#####', 
    given_name: '#####', 
    family_name: '#####', 
    link: '#####', 
    picture: '#####', 
    gender: '#####', 
    locale: '#####' 
} 
+0

私は、これは私が探している答えは本当にわかりません。前述のとおり、https://www.googleapis.com/auth/userinfoの範囲があります。プロファイルとhttps://www.googleapis.com/auth/userinfo.emailを参照してください。メッセージをチェックしない場合でも、実際にGmailのスコープを含める必要がありますか? – amlibtest

+0

gmail.users.getProfileレスポンスを見ると、電子メールアドレス、ID、合計メッセージ、合計スレッドがありますが、ユーザプロファイル情報はありません。だから私は正解としてこれを受け入れることができないのではないかと心配です – amlibtest

+0

私は私の誤解にとても残念です。私は私の答えを "Added"として更新しました。これをチェックしてください。このサンプルは、 '' oauth2.userinfo.get''を使用してユーザー情報を取得します。 – Tanaike

0

ます。またPassportJSに見ることができます。彼らには、OAuth2と3つの異なるGoogle Auth戦略を含む複数の戦略があります。私の答えは本当にあなたの質問に答えることはありませんが、多分パスポートのコードを覗いても、あなたは答えを得るかもしれません。

http://passportjs.org/

+0

私はあなたの答えをありがとうが、私の問題は認証ではありません。 Passport.jsを見ると、OAuthはOpenIDと同じではないことがわかります。お役立ち情報 – amlibtest

関連する問題