如何在android中管理Oauth访问令牌及其在活动之间的流?
我使用rails和doorkeeper构建了一个RESTAPI。我使用断言授权流和facebook登录在android客户端创建和登录用户 我已成功登录并使用改装从服务器获得访问令牌。访问令牌具有令牌、刷新令牌、令牌类型、到期时间和创建时间信息 当用户浏览我的android应用程序时,我有以下选项来管理和维护此令牌如何在android中管理Oauth访问令牌及其在活动之间的流?,android,oauth,access-token,retrofit,Android,Oauth,Access Token,Retrofit,我使用rails和doorkeeper构建了一个RESTAPI。我使用断言授权流和facebook登录在android客户端创建和登录用户 我已成功登录并使用改装从服务器获得访问令牌。访问令牌具有令牌、刷新令牌、令牌类型、到期时间和创建时间信息 当用户浏览我的android应用程序时,我有以下选项来管理和维护此令牌 当用户打开应用并登录时,将access token中的所有信息保存在SharedReferences中。现在,它导致了成功登录时的主要活动,我使用令牌访问共享首选项和访问api 第二
谢谢 我认为最可靠的方法是扩展您的
应用程序
类,并在那里管理您可能希望使用令牌执行的每个进程
这样,您就有了一个共同的地方,您的所有活动都可以与之交互——避免代码重复。此外,它是第一个被调用的类,因此您可以确保下次调用应用程序时,您的第一个活动将已经能够使用令牌
对于数据持久性,我强烈建议将所有信息存储在SharedReferences
中。毕竟,他们被认为正是为了这个目的
AndroidManifest.xml
[...]
<application
android:name="com.yourpackage.YourApp"
[...]
然后访问使用的方法
YourApp.getInstance().getAccessToken();
您应该在登录后将数据存储在单例中,以便您可以在应用程序中的任何位置访问数据
然后,如果您将OkHttp与改型一起使用,您可以使用OkHttp的拦截器(如本文所述)在令牌过期时刷新令牌。我需要将accessToken设置为静态吗?因为如果我让它是非静态的,它就不起作用了。如果我将其保留为非静态变量,则在下一个活动中会给出null值。@StarWars是的,您应该使用单例模式。我已经更新了密码。我想这个问题可能会回答这个问题。可能重复的
YourApp.getInstance().getAccessToken();