2013-08-27 65 views
0

在我的C#應用​​程序,我試圖讓aouth2訪問和刷新令牌:谷歌的oauth2 C#:沒有刷新令牌

https://developers.google.com/accounts/docs/OAuth2InstalledApp

在階段:處理響應,當我撥打電話我應該得到的東西,如:

{ 
    "access_token":"1/fFAGRNJru1FTz70BzhT3Zg", 
    "expires_in":3920, 
    "token_type":"Bearer", 
    "refresh_token":"1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" 
} 

,但我得到

{ 
    "access_token":"1/fFAGRNJru1FTz70BzhT3Zg", 
    "expires_in":3920, 
    "token_type":"Bearer", 
} 

因此:refresh_token丟失。我調試,我相信我打了API方法:FetchAccessAndRefreshTokens但我沒有refresh_token。

PS:我正在使用201306 API

任何想法?

+0

似乎相同的問題:http://stackoverflow.com/questions/8433990/when-authenticating-with-oauth-and-youtube-always-get-error-invalid-grant-on – daghan

+0

請參閱由mariuss : http://stackoverflow.com/questions/18317623/no-refresh-token-permission-to-access-data-while-offline-google-oauth/18342063#18342063 – mengcheng

回答

1

在API中,OAuth2ProviderForApplications.cs文件內,在GetAuthorizationUrl()方法,在線路100如果添加& approval_prompt =力到字符串:

返回的String.Format(「{0}?範圍= {1} &狀態= {2} & REDIRECT_URI = {3} & RESPONSE_TYPE = {4} &「+ 」的client_id = {5} & ACCESS_TYPE = {6} & approval_prompt =力

它的工作原理。但這是一個可怕的解決方法,再加上它可能會創建Apache許可證問題。

如何找到:在google oauth2 playground(https://developers.google.com/oauthplayground/)中設置了此參數(approval_prompt = force),如果您忽略它,則不會提供刷新令牌。