我使用Google Oauth2编写了一个MVC应用程序,如下所示:https://developers.Google.com/api-client-library/dotnet/guide/aaa_oauth#web_applications
我有访问令牌过期的问题。当访问令牌过期时,我在调用Google API时会出现异常:“访问令牌已经过期,但我们不能刷新它”
初始身份验证是两个迭代机制:
https://accounts.google.com/o/oauth2/auth?access_type=offline&response_type=code&client_id=MYCLIENTID&redirect_uri=http:%2F%2Flocalhost%2FHomepage%2FAuthCallback%2FIndexAsync&scope=https:%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar https:%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly&state=http:%2F%2Flocalhost%2FHomepage%2F95419199
注意access_type=offline是存在的。所以我也应该得到刷新令牌(不会发生)。
第二次迭代--AuthorizeAsync返回带有填充凭据和空重定向的结果:
问题1-RefreshToken现在应该为null吗?
问题2-如果访问令牌在那一刻到期(为了测试,我只设置ExpiresInSeconds=0),我调用RefreshTokenAsync方法,但它总是返回false!为什么?我在这里漏掉了什么?
当RefreshTokenAsync返回false时,正确的处理方法是什么?当前RedirectResult(result.redirecturi)命令将失败,因为result.redirecturi为空。
哦,我终于明白了:)对于那些感兴趣的人来说-刷新令牌只发出一次,当你得到同意屏幕时,你必须单击是。
因此,为了获得刷新令牌,请转到您的帐户设置帐户权限:https://security.google.com/settings/security/permissions
并撤销对您在Google Developers控制台中配置的项目的访问权限:https://console.Developers.Google.com/project
现在,在某个地方记录result.credential.token.refreshToken值,它是一个加密的字符串。
为了简单起见,我将我的appsetting放在Web.config中。
现在,我只需将该值赋给result.credential.token.refreshToken=refreshToken;
我正在使用Twitter的REST API授权一个应用程序。我刚刚用 https://api.twitter.com/oauth/authorize 并从重定向uri获取了oauth_验证程序。 然后我就用了 https://api.twitter.com/oauth/access_token 获取访问令牌。 问题是,我从这个方法得到的响应格式是。就像 oauth_token=7838976568
当我从Google API获得一个< code>access_token时,它带有一个< code>expires_in值。根据文档,该值表示“访问令牌的剩余寿命”。 这个值的单位是多少?
我有一个基于web的应用程序,使用谷歌OAuth2.0作为登录框架。它以前一直工作得很好,直到昨天。访问令牌过期后,applcation无法获取刷新令牌。除此之外,“请求许可”页面已经改为“有离线访问”,而不是“知道你在谷歌上是谁”和“查看你的电子邮件”。 我试图寻找类似的问题,但我找不到一个。这是从昨天开始发生的。在此之前,我从来没有对代码做过任何改变。
调用execute方法时,它会引发以下异常: 谁能指出我哪里做错了?我能够从谷歌oAuth UI获得访问令牌。
(联系人和日历有不同的代币) 同步脚本: $AccesStoken是一个序列化字符串,如下所示: 我做错了什么? 有趣的是,对于联系人来说,同步一直都很好(访问令牌的属性与日历同步中的属性相同)
本文向大家介绍oauth 刷新访问令牌,包括了oauth 刷新访问令牌的使用技巧和注意事项,需要的朋友参考一下 示例 资源