使用RefreshToken更新Cognito IDToken

时间:2019-04-11 05:51:54

标签: android authentication amazon-cognito refresh-token

您好,我是android应用程序开发人员,我在移动应用程序中使用了认知身份验证机制。验证用户身份后,我将获得RefreshTokenIDToken。根据Amazon cognito的说法,IDToken会在整整一个小时后过期。我正在尝试重新进行会话以再次获得令牌,这就是我试图完成的方式。

    String poolId       = 'xxxxxx';
    String clientId     = 'xxxxxx';
    String clientSecret = 'xxxxxx';

    CognitoUserPool userPool = new CognitoUserPool(context, poolId, clientId, clientSecret,Regions.EU_WEST_1);
    CognitoUser user = userPool.getUser();

    user.getSessionInBackground(new AuthenticationHandler() {

        @Override
        public void onSuccess(CognitoUserSession userSession, CognitoDevice newDevice) {
            String idToken = userSession.getIdToken().getJWTToken();

            Map<String, String> logins = new HashMap<String, String>();
            logins.put("cognito-idp." + Constants.REGION + ".amazonaws.com/" + Constants.UserPool, userSession.getIdToken().getJWTToken());

            credentialsProvider.setLogins(logins);
            credentialsProvider.refresh();
        }

        @Override
        public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String userId) {
            Log.i("MQTT","Detail");
        }

        @Override
        public void getMFACode(MultiFactorAuthenticationContinuation continuation) {
            Log.i("MQTT","MFACode");
        }

        @Override
        public void authenticationChallenge(ChallengeContinuation continuation) {
            Log.i("MQTT","Challenge");
        }

        @Override
        public void onFailure(Exception exception) {
            Log.i("MQTT","Fail");
        }
    });

我有userpoolid,需要知道从哪里可以得到clientIDclientSecret。这样我就可以在onSuccess回调中获取数据并得到IDToken

真的很感谢有人能帮忙。 谢谢

1 个答案:

答案 0 :(得分:0)

  • 使用cognito转到您的用户池,然后单击您想要的池 从事于。

  • 在常规设置下,单击应用程序客户端。

  • 现在单击添加应用程序客户端。

  • 给您的应用命名

  • 确保已选择生成客户端密码

  • 单击创建客户端应用程序。

现在,您可以记下客户端ID和客户端密码。

文档:https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html