Node.js でユーザー プロファイルの詳細を取得しようとしています。
フローは、(Google とネイティブ SDK を介して認証することにより) トークンを生成するモバイル アプリを用意し、ノード サーバーにトークンを送信して、Google からユーザーの詳細を取得したいというものです。私は次のことを試しました(access_token
クライアントから持っていると仮定して):
var request = require('request');
request('https://www.googleapis.com/oauth2/v2/userinfo?access_token=' + access_token, function(err, res, body) {
if (err) return callback(err);
if (res.statusCode != 200) {
return callback(new Error('Invalid access token: ' + body));
}
else {
var me;
try { me = JSON.parse(body);}
catch (e) {
return callback(new Error('Unable to parse user data: ' + e.toString()));
}
console.log('user profile:', me);
}
});
displayName
これは機能しますが、nullフィールド、null (スコープを持っていても) などの悪い応答が返されることがありemail
、全体的に信頼性が低くなります。
Google API Node モジュールを使用してみましたが、そのフローはトークンを取得する必要があることを前提としており、不必要に複雑です。
それ以外は、Google の API のバージョンの違いがよくわからず、いつ何を使えばいいのかわからない。
編集
nulldisplayName
フィールドの問題は、iOS SDK を介して生成されたトークンでのみ発生するようです。Android SDK で生成されたトークンは問題なく、それらを使用して API を呼び出すと、displayName
. iOSトークンを取得して、次のAPIを呼び出してみました:
https://www.googleapis.com/plus/v1/people/me?access_token=...
結果はdisplayName
でしたが、サーバーから数回呼び出した後、
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}