2017-04-26 81 views
1

我試圖使用Google API Node.js客戶端,使用OAuth2 API檢索登錄用戶的名稱。如何從OAuth2 Google API獲取電子郵件和個人資料信息?

按照使用示例,我設法做了登錄,但我找不到獲取配置文件信息的方法。

我沒有使用People API和Plus API,因爲據我所知,OAuth2包含https://www.googleapis.com/auth/userinfo.profile,這應該足夠用於該任務。

我已經看到了一些類似的問題,並試圖這樣一個的解決方案,但它沒有工作,也許是太舊(?)

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

看着其他的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

您可以ü快速啓動node.js.詳細信息是https://developers.google.com/gmail/api/quickstart/nodejs。使用Quickstart中的示例腳本,您可以通過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

我很抱歉我的誤解。我將我的答案更新爲「已添加」。請檢查一下。該示例使用''oauth2.userinfo.get''檢索用戶信息。 – Tanaike

0

您也可以看看PassportJS。他們有多種策略,包括OAuth2和3種不同的Google Auth策略。我的回答並沒有真正回答你的問題,但也許甚至在護照的代碼採取偷看,你可能會得到你的答案。

http://passportjs.org/

+0

我很感謝你的回答,但我的問題不是認證。看看Passport.js,我發現OAuth與OpenID不同。很高興知道 – amlibtest

相關問題