我们在我们的Android应用程序中使用改版,与OAuth2安全服务器通信。一切都很好,我们使用RequestInterceptor在每个调用中包含访问令牌。然而,有时访问令牌会过期,需要刷新令牌。当令牌过期时,下一次调用将返回未经授权的HTTP代码,因此很容易监视。我们可以通过以下方式修改每个改型调用:在失败回调中,检查错误代码,如果它等于未授权,刷新OAuth令牌,然后重复改型调用。然而,为此,应该修改所有调用,这不是一个容易维护的好解决方案。有没有一种方法可以做到这一点,而不修改所有的改型调用?
请不要使用拦截器
来处理身份验证。
目前,处理身份验证的最佳方法是使用新的authenticator
API,这是专门为此目的设计的。
当响应为401未授权
时,OkHttp将自动向Authenticator
询问凭据,以重试上次失败的请求。
public class TokenAuthenticator implements Authenticator {
@Override
public Request authenticate(Proxy proxy, Response response) throws IOException {
// Refresh your access_token using a synchronous api request
newAccessToken = service.refreshToken();
// Add new header to rejected request and retry it
return response.request().newBuilder()
.header(AUTHORIZATION, newAccessToken)
.build();
}
@Override
public Request authenticateProxy(Proxy proxy, Response response) throws IOException {
// Null indicates no attempt to authenticate.
return null;
}
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setAuthenticator(authAuthenticator);
在创建翻新
RestAdapter
时使用此客户端
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(ENDPOINT)
.setClient(new OkClient(okHttpClient))
.build();
return restAdapter.create(API.class);
我是React Native的新手,我遇到的第一个障碍是在访问令牌到期时刷新我的访问令牌。基本实现是这样的,有一个访问令牌和一个刷新令牌。访问令牌到期,刷新令牌在授权标头中发送以刷新访问令牌。基于这篇SO帖子,我实现了一个中间件,它在每次API调用期间检查我们的访问令牌是否即将到期。如果是这样,它会启动一个动作创建者,该动作创建者会调用API来刷新和确认新的访问令牌。我在这里只展示了刷新调用,以免
本文向大家介绍oauth 刷新访问令牌,包括了oauth 刷新访问令牌的使用技巧和注意事项,需要的朋友参考一下 示例 资源
我有一个基于web的应用程序,使用谷歌OAuth2.0作为登录框架。它以前一直工作得很好,直到昨天。访问令牌过期后,applcation无法获取刷新令牌。除此之外,“请求许可”页面已经改为“有离线访问”,而不是“知道你在谷歌上是谁”和“查看你的电子邮件”。 我试图寻找类似的问题,但我找不到一个。这是从昨天开始发生的。在此之前,我从来没有对代码做过任何改变。
null 很抱歉太啰嗦了。 提前谢了。
我想从谷歌得到访问令牌。Google API表示,要获得访问令牌,将代码和其他参数发送到令牌生成页面,响应将是一个JSON对象,如下所示: 但是,我没有收到刷新令牌。我的答复是: