2012-03-23 66 views
8

我正在編寫一個Android應用程序,它使用AccountManager獲取令牌。從Android應用程序中,我可以與Google Picasa進行互動 - 效果很好。在第三方服務器上驗證Android的authToken

我想達到的是:發送一些text + authToken到我的第三方服務器,然後在保存文本之前檢查標記是否正確。現在的問題是:是否有可能確定某個特定標記的authToken是否僅在標記本身(也可能是電子郵件地址)上正確。

我已經編程的服務器部分,它接受的令牌(從Android應用程序發送),然後發出一個URL地址的請求:

https://accounts.google.com/o/oauth2/tokeninfo?access_token=%token_here% 

我得到的回覆是以下JSON:

{ 
    "error" : "invalid_token" 
} 

但是,這裏的鏈接http://oauthssodemo.appspot.com/step/4指出,如果令牌是正確的,我應該收到不同的JSON響應。你能告訴我我做錯了什麼:我相信檢查標記的有效性的方式並不那麼簡單,但我應該實施整個openid或其他東西。即使是這種情況,我如何檢查android應用程序發送的令牌是否正確,因此我可以保存消息的「文本」部分。

謝謝。

+0

對此有何進展?我也很感興趣。 – Urizev 2012-04-04 19:02:06

+0

+1僅用於問題的精確措辭。這是2015年,仍然很難找到適當/易於查找的文件。令人沮喪。 – 2015-08-06 20:13:51

回答

2

解決方法如下。

https://accounts.google.com/o/oauth2/tokeninfo?access_token=%token_here% 

但在我的情況,我試圖驗證「授權碼」,而不是「訪問令牌」,你可以在這裏看到:https://code.google.com/oauthplayground/

如果您可以通過這個網址驗證令牌「再使用Android和OAuth不使用

lh2 

而是使用下面的服務名稱:

http://picasaweb.google.com/data/ 

所以,你應該叫getAuthToken如下

getAuthToken(account, "http://picasaweb.google.com/data/" , true, null, null); 

然後你就可以驗證這個調用接收的令牌的URI張貼以上。

1

閱讀本 https://developers.google.com/accounts/docs/OAuth2WebServer

Web服務器接收的授權碼後,可以交換 訪問令牌和刷新令牌的授權碼。這 請求是HTTPS POST,幷包括以下參數:使用的AccountManager和開始使用谷歌播放服務的GoogleAuthUtil類,那麼它變得容易

+0

嗨,這只是我在回覆中得到的字段,它始終在工作,而不是問題的一部分。問題是如何驗證令牌,一旦我已經得到它。問題已經解決,你可以通過綠色的確定。 – eleanor 2012-07-19 18:17:02

7
+0

我一直在關注如何確保向我的服務器(爲我的Android應用程序提供內容)發出的請求來自我的Android應用程序,它看起來像是一個完美的解決方案。感謝您發佈此! – 2013-06-03 05:57:03

+0

嗨蒂姆,我正在工作,你鏈接到的例子非常簡單。我只有一個問題;它說使用'GoogleAuthUtil.getToken()'來獲得一個ID令牌,但是我爲'accountName'傳遞了什麼值?我知道我可以爲設備檢索經過身份驗證的Google帳戶,但是如果有多個帳戶,我怎麼知道要使用哪個帳戶?對不起,如果答案是顯而易見的,但我不能指出這一部分。 – 2013-06-04 03:23:58

+2

對此可能太遲了,但使用AccountPicker類讓用戶選擇一個帳戶,這會給你的帳戶名 – 2013-06-15 04:59:03

1

我遇到了完美執行任務的護照 - 谷歌令牌護照策略。

https://www.npmjs.com/package/passport-google-token

更多細節存在於上述鏈接。

+0

鏈接往往隨着時間的推移而打破。請提供鏈接內容的簡短摘要。請參閱https://stackoverflow.com/help/referencing。 – 2015-03-27 07:56:38

相關問題