2017-04-26 170 views
6

我試圖訪問Google Drive API,並且我讀取的是documentation。 我的iOS應用程序發送第一個請求以請求端點https://accounts.google.com/o/oauth2/v2/auth的許可。Google Identity Platform:無法交換刷新和訪問令牌的授權代碼

用戶授予權限。我得到一個代碼。下一步是授權代碼刷新和訪問令牌。

至於已安裝的應用程序,我不需要發送客戶端密鑰。 爲了做到這一點的iOS應用程序發送POST請求到端點:

https://www.googleapis.com/oauth2/v4/token 

頁眉:

Content-Type : application/x-www-form-urlencoded 

體:

code={CODE_FROM_OAUTH_SERVER}&client_id={CLIENT_ID_FROM_CONSOLE}&redirect_uri={APP_BUNDLE_IDENTIFIER}:/code&grant_type=authorization_code 

我得到的迴應:

{ 
    "error": "unsupported_grant_type", 
    "error_description": "Invalid grant_type: " 
} 

A pp在Google控制檯中註冊。

我的問題是我做錯了什麼?

+0

您在開發者控制檯上創建了哪種類型的憑據? – DaImTo

+0

@DaImTo,安裝應用程序的憑證,在我的情況下 - 創建客戶端ID - > iOS –

+0

,然後您按照https://openid.github.io/AppAuth-iOS/? – DaImTo

回答

3

它將POST請求中的指定數據發送到HTTP服務器,與瀏覽器在填寫HTML表單並提交時的操作相同。這將導致使用內容類型application/x-www-form-urlencoded將數據傳遞到服務器。

你應該改變你通過OAuth的參數,如client_id的方式嘗試,redirect_urigrant_type

還是應該儘量使默認類型的本地客戶端。

+1

I嘗試了不同的方式,它不起作用,也許你有具體的建議?提前致謝。 –

0

解析錯誤的一個可能的來源是redirect_uri。它應該是網址編碼的。

+1

是的,我已經添加了URL編碼,它沒有幫助 –

相關問題