首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS认知android如何使用用户名、密码进行手动登录流

AWS认知android如何使用用户名、密码进行手动登录流
EN

Stack Overflow用户
提问于 2018-05-20 17:17:58
回答 1查看 1.6K关注 0票数 1

我正在尝试构建一个带有Amazon身份验证的Android,但不想使用默认的AuthUI登录用户。

但是,我找不到任何关于如何做到这一点的参考,样本,例子,博客。

我试着遵循https://docs.aws.amazon.com/aws-mobile/latest/developerguide/tutorial-android-aws-mobile-notes-auth.html的手册

&我能够成功地使用默认的AuthUI登录。

现在,要用用户名登录密码,我从这个引用- https://aws.amazon.com/blogs/mobile/using-android-sdk-with-amazon-cognito-your-user-pools/创建了一个身份验证处理程序

代码语言:javascript
复制
AuthenticationHandler handler = new AuthenticationHandler() {
    @Override
    public void onSuccess(CognitoUserSession userSession, CognitoDevice newDevice) {

    }

    @Override
    public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String userId) {
        AuthenticationDetails authenticationDetails = new AuthenticationDetails(mEmailEditText.getText().toString(), mPasswordEditText.getText().toString(), null);
        authenticationContinuation.setAuthenticationDetails(authenticationDetails);
        authenticationContinuation.continueTask();
    }

    @Override
    public void getMFACode(MultiFactorAuthenticationContinuation continuation) {

    }

    @Override
    public void authenticationChallenge(ChallengeContinuation continuation) {

    }

    @Override
    public void onFailure(Exception exception) {

    }
};

那么,现在如何调用这个处理程序来获取认知用户会话&详细信息

任何人都可以分享适当的方向来完成这件事或任何其他方法可以做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-30 04:04:52

那么,现在如何调用这个处理程序来获取认知用户会话&详细信息

您需要先初始化CognitoUser对象并调用getSessionInBackground()

检查下面的代码,调用login()以用户名、密码登录。并确保build.gradle导入所需的AWS库:

代码语言:javascript
复制
import com.amazonaws.mobile.client.AWSMobileClient;
import com.amazonaws.mobile.config.AWSConfiguration;
import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoDevice;
import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser;
import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserPool;
import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserSession;
import com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.AuthenticationContinuation;
import com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.AuthenticationDetails;
import com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.ChallengeContinuation;
import com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.MultiFactorAuthenticationContinuation;
import com.amazonaws.mobileconnectors.cognitoidentityprovider.handlers.AuthenticationHandler;

// ...

private EditText mEmailEditText;
private EditText mPasswordEditText;

private String email;
private String password;

// ...

private void login()
{
    email = mEmailEditText.getText().toString(); // email
    password = mPasswordEditText.getText().toString(); // password
    if (email.isEmpty() || password.isEmpty())
    {
        return;
    }

    final AWSConfiguration awsConfiguration = AWSMobileClient.getInstance().getConfiguration();
    final CognitoUserPool userPool = new CognitoUserPool(this, awsConfiguration);
    final CognitoUser user = userPool.getUser(email); // Create a User Object with a UserId
    user.getSessionInBackground(authenticationHandler);
}

private AuthenticationHandler authenticationHandler = new AuthenticationHandler()
{
    @Override
    public void onSuccess(final CognitoUserSession userSession, final CognitoDevice newDevice)
    {
      // Login success, do startActivity() or other thing
    }

    @Override
    public void getAuthenticationDetails(final AuthenticationContinuation continuation, final String userId)
    {
        if (userId != null)
        {
            email = userId;
        }


        final AuthenticationDetails authDetails = new AuthenticationDetails(email, password, null);
        continuation.setAuthenticationDetails(authDetails);
        continuation.continueTask();
    }

    @Override
    public void getMFACode(final MultiFactorAuthenticationContinuation continuation)
    {
    }

    @Override
    public void authenticationChallenge(final ChallengeContinuation continuation)
    {
    }

    @Override
    public void onFailure(final Exception exception)
    { 

    }
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50437490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档