2017-03-18 81 views
0

所以,我已經得到了從谷歌認證後這種反應:我應該如何處理google oauth響應?

{ 
    "user": { 
    "id": "116807551237969746774", 
    "email": "[email protected]", 
    "verified_email": true, 
    "name": "John Doe", 
    "given_name": "John", 
    "family_name": "Doe", 
    "picture": "https:\/\/lh3.googleusercontent.com\/-XdUIqdMkCWA\/AAAAAAAAAAI\/AAAAAAAAAAA\/4252ldubv5M\/photo.jpg", 
    "locale": "en" 
    }, 
    "credentials": { 
    "access_token": "ya29.GlsSBIA_hMKZIDE_wqJAJS0vrHD_Wd2HfwRTTvLISv0i1uFICCqz4JdEZcL09mFFlGdt71D9pW80SLShHgyeSOZgnWcL5piL5m0jYo1TMU6o0fDLnqGAWm6BY-Wl", 
    "token_type": "Bearer", 
    "expires_in": 3600, 
    "refresh_token": "1\/az_TmhPRaYG5NDH6L9gBeNo6STOD9EbTt1VkkBmp3IQ", 
    "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjBlNmExN2I2YjU4MGIzNTFmMGQ5YmEzMzY2YTU0Y2U1NmViOWIxN2UifQ.eyJhenAiOiIxMDAzMjk3NzQ4MDc1LWsxdml0OGMxMHJ1ZnM4cjZpYmZyYmxlZmJhamFoZmllLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiMTAwMzI5Nzc0ODA3NS1rMXZpdDhjMTBydWZzOHI2aWJmcmJsZWZiYWphaGZpZS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNjgwNzU1MTIzNzk2OTc0Njc3NCIsImVtYWlsIjoiNzA0MzA2N0BnbWFpbC5jb20iLCJlbWFpbF84PIXpZmllZCI6dHJ1ZSwiYXRfaGFzaCI6IkdrOHFjMTdCcEVGVGZmWkpKbkh6NGciLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOjE0ODk4MTIxMzksImV4cCI6MTQ4OTgxNTczOSwibmFtZSI6IkFudG9uIEFsZWtzYW5kcm92IiwicGljdHVyZSI6Imh0dHBzOi8vbGg0Lmdvb2dsZXVzZXJjb250ZW50LmNvbS8tTEJuMTlWX1NEN3cvQUFBQUFBQUFBQUkvQUFBQUFBQUFBQUEvQUFvbXZWMTRMVFIycUgtOXJ5S2dScjIxd3A1Z1FZRGNmUS9zOTYtYy9waG90by5qcGciLCJnaXZlbl9uYW1lIjoiQW50b24iLCJmYW1pbHlfbmFtZSI6IkFsZWtzYW5kcm92IiwibG9jYWxlIjoiZW4ifQ.BHv5BP3ZsagvunfMzGLwmxkBdtoRocPa_PXdq2lrd4D9BoFGkK06eJVbNNbcPOFdAMba3V5lIIG_L499gIy3TTz_PIHBPi6DMSp6uyfkCwf2n-PspZtTbTRlUm5ZvRdAyPEEyLLkWllKkMsRk-Nwp3vhyOLnExzH7SXiEefU4kaXXCpjsHV3GvZ-yhrmNlicEY3TPLwI-tl_lydXTBXRRiPZBGWjHK75hqvQzUktC2Flimd7JnCLhF0FOS3yFKc5D11WPKMOO4YkIQDbBrKY64vyxQAd-Zb2KfvXZi6Dorq7IJF6sK2GAfI3edSaoMZBMa0-x2V7FuFIBLtTgGRnsw" 
    } 
} 

我還沒有發現什麼,我應該用這種反應的credentials一部分做文檔?我應該使用什麼來識別用戶身份?什麼應該保存爲客戶端(ios/android應用程序)令牌以恢復會話? expires_in: 3600是什麼意思,我該怎麼辦? token_type: Bearer是什麼意思,爲什麼我需要它?等等


謝謝@pioyyid澄清! 我一直在尋找的主要事情是這樣的:

在服務器端從credentials得到access_token財產和驗證,使用該網址

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={your access_token} 

做任何你想要與所提供的數據的其餘部分。

就個人而言,我更喜歡生成自己的令牌,將其保存在客戶端並使用它來恢復用戶會話(以驗證其身份)。一旦令牌因任何原因丟失,用戶只需再次完成整個過程。

回答

0

我應該如何處理這個響應的憑證部分?

高興,因爲你做了很難的部分。

我應該如何使用用戶識別?

任何你喜歡的,或根本沒有。這取決於你的應用的用例。

什麼應該保存爲客戶端(ios/android應用程序)令牌以恢復會話?

刷新令牌。請注意,「恢復會話」是錯誤的術語。在OAuth/REST中,沒有會話。

expires_in:3600是什麼意思,我該怎麼辦?

這就是說,訪問令牌將在1小時(3600秒)內過期。你應該做的是使用刷新令牌來獲取一個新的訪問令牌,通過在發佈後描述https://developers.google.com/identity/protocols/OAuth2WebServer#offline

什麼是token_type:承載是指?

這意味着只要您嘗試訪問Google API,就應將訪問令牌放置在HTTP授權標頭中。例如Authorization: "Bearer aaaaaaa"其中aaaaaa是訪問令牌。

爲什麼我需要它?

向Google證明您的應用已被該資源的所有者授予訪問Google資源(例如,Drive中的文件)的權限。