我正在尝试构建一个带有Amazon身份验证的Android,但不想使用默认的AuthUI登录用户。
但是,我找不到任何关于如何做到这一点的参考,样本,例子,博客。
&我能够成功地使用默认的AuthUI登录。
现在,要用用户名登录密码,我从这个引用- https://aws.amazon.com/blogs/mobile/using-android-sdk-with-amazon-cognito-your-user-pools/创建了一个身份验证处理程序
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) {
}
};那么,现在如何调用这个处理程序来获取认知用户会话&详细信息
任何人都可以分享适当的方向来完成这件事或任何其他方法可以做到这一点吗?
发布于 2018-05-30 04:04:52
那么,现在如何调用这个处理程序来获取认知用户会话&详细信息
您需要先初始化CognitoUser对象并调用getSessionInBackground()
检查下面的代码,调用login()以用户名、密码登录。并确保build.gradle导入所需的AWS库:
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)
{
}
};https://stackoverflow.com/questions/50437490
复制相似问题