我正在使用 CognitoUserPool (com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserPool),我使用 getSessionInBackground 方法登录 CognitoUsers,使用 signUpInBackground 方法创建用户。
例如,对于登录:
CognitoUser me = userPool.getUser(email);
me.getSessionInBackground(new AuthenticationHandler() {
@Override
public void onSuccess(CognitoUserSession userSession, CognitoDevice newDevice) {
//OK
}
@Override
public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String userId) {
String password = "mypassword";
AuthenticationDetails details = new AuthenticationDetails(userId, password, null);
authenticationContinuation.setAuthenticationDetails(details);
authenticationContinuation.continueTask();
}
@Override
public void getMFACode(MultiFactorAuthenticationContinuation continuation) {
}
@Override
public void authenticationChallenge(ChallengeContinuation continuation) {
...
}
@Override
public void onFailure(Exception exception) {
//ERROR
}
});
和注册:
CognitoUserAttributes userAttributes = getAttributesFromUser(ctx, u);
SignUpHandler signupCallback = new SignUpHandler() {
@Override
public void onSuccess(CognitoUser user, SignUpResult signUpResult) {
// Sign-up was successful
}
@Override
public void onFailure(Exception exception) {
// Sign-up failed, check exception for the cause
}
};
userPool.signUpInBackground(u.email, "mypassword", userAttributes, null, signupCallback);
我想添加 Facebook 支持(我已经在应用程序中有一个 facebook 登录,并且我想将 facebook 登录的用户集成到 cognito 池中。文档说我必须在 AWSCredentials 中添加一个 Logins 对象,但我将我的用户池创建为:
userPool = new CognitoUserPool(ctx, POOL_ID, CLIENT_ID, CLIENT_SECRET, clientConfiguration, Regions.EU_CENTRAL_1);
而且我还没有找到任何以 AWSCredentials 作为输入参数的构造函数。
我想将使用 facebook 登录的用户存储在我的 Amazon 用户池中,我已经有了带有 facebook 登录的自定义服务器,我正在将用户迁移到 Amazon,但我仍然有我的常规和 facebook 登录/注册 API。
提前致谢