寻找有关实现signOut()函数的帮助,以允许用户退出应用程序。

我已经实现了在这里找到的代码:
https://docs.aws.amazon.com/aws-mobile/latest/developerguide/add-aws-mobile-user-sign-in.html

我可以使AWS登录屏幕正常工作,也可以看到在Cognito中创建的新用户,但是当我尝试实现退出按钮使我回到以前的意图时,它会不断跳回。我进行了一些阅读,发现用户将始终保持登录状态。

以下是我用于AuthenticatorActivity的代码:

import com.amazonaws.mobile.auth.ui.SignInUI;
import com.amazonaws.mobile.client.AWSMobileClient;
import com.amazonaws.mobile.client.AWSStartupHandler;
import com.amazonaws.mobile.client.AWSStartupResult;


public class AuthenticatorActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_authenticator);

        // Add a call to initialize AWSMobileClient
        AWSMobileClient.getInstance().initialize(this, new AWSStartupHandler() {
            @Override
            public void onComplete(AWSStartupResult awsStartupResult) {
                SignInUI signin = (SignInUI) AWSMobileClient.getInstance().getClient(AuthenticatorActivity.this, SignInUI.class);
                signin.login(AuthenticatorActivity.this, MainActivity.class).execute();
            }
        }).execute();
    }
}


用户输入详细信息进行注册然后登录后,显示的下一个活动/意图也将显示以下退出按钮。

下面的代码是当我按下“退出”按钮(在另一个活动中)时所拥有的内容:

/** called when the user taps the send button */
    public void signOutOfApp(View view) {
        Intent intent = new Intent(this, AuthenticatorActivity.class);
        startActivity(intent);
    }


有人可以帮我建议如何使它起作用吗?
AuthenticatorActivity似乎没有任何内容可以指示它在哪里传递/存储新的用户详细信息,当我进入下一个活动/意图时,我不确定如何调用/获取用户详细信息以将其传递给登出方法。
请在这里帮助指导我!提前致谢!

最佳答案

可通过IdentityManager类使用signOut方法。下面将让您调用signOut。由于signOut是异步的,因此您可能需要向IdentityManager注册回调,以便在用户成功注销后获得回调。

注册回调以获取登录状态更改的通知:

IdentityManager.getDefaultIdentityManager().addSignInStateChangeListener(new SignInStateChangeListener() {
                @Override
                public void onUserSignedIn() {
                    Log.d(LOG_TAG, "User Signed In");
                }

                @Override
                public void onUserSignedOut() {
                    Log.d(LOG_TAG, "User Signed Out");
                }
});


调用signOut:

IdentityManager.getDefaultIdentityManager().signOut();


AWSMobileClient如何与IdentityManager交互?

AWSMobileClient创建IdentityManager对象,并将该对象设置为默认的IdentityManager。由于IdentityManager是单例,因此您可以在应用程序的任何位置使用IdentityManager.getDefaultIdentityManager()

08-07 21:40