小编Fré*_*ric的帖子

如何使用JWT for Android应用程序实现刷新令牌进程

我正在使用Oauth2令牌系统来访问我的Android应用程序的REST API.我在客户端的令牌刷新部分遇到了一些问题.

这里是流:我的应用程序发出请求(在参数的访问令牌)的服务器由于一些的AsyncTask( PostCommentAsyncTask(),AddFriendAsyncTask()等...),所以如果是的accessToken有效这是确定的,但如果它已过期我调用另一个AsyncTask (GetRefreshTokenAsyncTask())从onPostExecute()先例的方法AsyncTask获得新的accessToken.这对我来说是棘手的部分.当我获得新的访问令牌时,我想重新执行对服务器的初始AsyncTask请求.我无法弄清楚如何正确地做到这一点.

example1:

请求PostCommentAsyncTask()- >(acessToken已过期) - > GetRefreshTokenAsyncTask()- >请求PostCommentAsyncTask()- >(好令牌) - >好的

编辑:

我最终选择使用该Volley库(不再需要使用Asynctask).在我使用时,JSON Web Token我可以检查在令牌的有效负载中编码的过期日期.

以下是在isAccessTokenExpired()向服务器发出请求之前检查访问令牌是否未过期的方法:

public Boolean isAccessTokenExpired(String accessToken){

        String[] accessTokenPart = accessToken.split("\\.");
        String header =accessTokenPart[0];
        String payload =accessTokenPart[1];
        String signature =accessTokenPart[2];

        try {

            byte[] decodedPayload = Base64.decode(payload, Base64.DEFAULT);
            payload = new String(decodedPayload,"UTF-8");
        } catch(UnsupportedEncodingException e) {
            e.printStackTrace();
        }


        try {
            JSONObject obj = …
Run Code Online (Sandbox Code Playgroud)

android oauth-2.0 jwt android-asynctask android-volley

5
推荐指数
1
解决办法
3064
查看次数