在我的C#应用程序中,我正在尝试获取aouth2访问权限并刷新令牌:
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 :(得分:1)
在API中,在OAuth2ProviderForApplications.cs文件中,在GetAuthorizationUrl()方法中,如果您将& approval_prompt = force 添加到字符串,则在第100行:
返回string.Format(“{0}?scope = {1}& state = {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),如果省略它,则不会提供刷新令牌。