2013-09-29 96 views
3

如何配置我的Google API訪問權限以在驗證時請求用戶的圖像?目前, '個人資料' 僅包含以下屬性後,用戶已經全成認證:Passportjs - 如何使用Google策略請求用戶的圖片?

profile.identifier:(串)

profile.displayName:(串)

profile.emails(目標)

name:(object)

是不是可以請求用戶的帳戶圖像?這是我目前的護照/谷歌的策略配置:

passport.use(new GoogleStrategy({ 
    clientID: CLIENT_ID, 
    clientSecret: CLIENT_SECRET, 
    returnURL: 'http://localhost:3000/auth/google/return', 
    realm: 'http://localhost:3000' 
    }, 
    function(identifier, profile, done) { 
    console.log('identifier ' + identifier) 
    for(var p in profile){ 
     console.log(p + ' : ' + profile[p]) 
     if(p === 'name'){ 
      for(var n in profile[p]){ 
       console.log(n + ' : ' + profile[p][n]) 
      } 
     } 
    } 
    } 
)); 

你可以看到,我檢查資料,看看返回什麼信息。我認爲這需要在我的Google Api控制檯中以某種方式進行配置。這是一個Google+ api功能嗎?

回答

7

通過護照返回的配置文件對象,只映射幾個領域:

profile.id = json.id; 
profile.displayName = json.name; 
profile.name = { familyName: json.family_name, 
       givenName: json.given_name }; 
profile.emails = [{ value: json.email }]; 

但它確實給你回一個包含更多信息的_json屬性:

嘗試:

var picture = profile._json['picture']; 
+0

這很有趣,因爲我已經看到其他人從profile._json屬性獲取信息的例子。但是這個屬性似乎並不存在於我的個人資料obj上。 profile._json ==='undefined' – Nick

+2

您正在使用Google OpenID策略。改爲使用OAuth2。這返回我在我的回答中提到的_json屬性:https://github.com/jaredhanson/passport-google-oauth –

+0

太好了。 OAuth2給了我我需要的東西。謝謝! – Nick