Для упрощения работы с моим приложением я решил использовать AWS Amplify вместо аутентификации в процессе аутентификации.
Вот как мое приложениеAuthenticationActivity выглядит, используя раскрывающуюся авторизацию для Android при создании нового пользователя: ![Signup Screen](https://i.stack.imgur.com/8LOts.png)
Это код AuthenticationActivity:
package com.aws.tool;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.amazonaws.mobile.client.AWSMobileClient;
import com.amazonaws.mobile.client.Callback;
import com.amazonaws.mobile.client.SignInUIOptions;
import com.amazonaws.mobile.client.UserStateDetails;
открытый класс AuthenticationActivityextends AppCompatActivity {
private final String TAG = AuthenticationActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_authentication);
AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
@Override
public void onResult(UserStateDetails userStateDetails) {
Log.i(TAG, userStateDetails.getUserState().toString());
switch (userStateDetails.getUserState()){
case SIGNED_IN:
Intent i = new Intent(AuthenticationActivity.this, MainActivity.class);
startActivity(i);
break;
case SIGNED_OUT:
showSignIn();
break;
default:
AWSMobileClient.getInstance().signOut();
showSignIn();
break;
}
}
@Override
public void onError(Exception e) {
Log.e(TAG, e.toString());
}
});
}
private void showSignIn() {
try {
AWSMobileClient.getInstance().showSignIn(this,
SignInUIOptions.builder()
.nextActivity(MainActivity.class).build()
);
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
}
В моем случае мне нужен только адрес электронной почты + пароль, поэтому эти правила я настроил в AWS Cognito.
Однако вы можете видеть, что у меня естьнесколько дополнительных атрибутов, сгенерированных интерфейсом авторизации:
- ИМЯ ПОЛЬЗОВАТЕЛЯ
- Имя
- Номер телефона
Я пыталсяоставьте эти поля пустыми и зарегистрируйтесь, но я получаю ошибки пользовательского интерфейса, конечно.Если я пытаюсь заполнить все поля, я получаю сообщение об ошибке, указывающее, что я пытаюсь отправить неавторизованные атрибуты в AWS cognito.
![UI errors on Signup Screen](https://i.stack.imgur.com/1g6lW.png)
Итак, яВернулся к документации по Auth-drop, но я понял, что настроить цвет фона и фоновое изображение можно только при настройке.
Это видно из документации AWS:
https://aws -amplify.github.io / docs / android / authentication # customization
Я не нашел способа отредактировать атрибуты по своему вкусу для простого варианта использования, такого как мой, ипоэтому я вынужден либо:
- изменить свои правила AWS Cognito, вынудив меня использовать телефон, атрибут имени и имя пользователя
- написать собственный вход в систему / регистрацию
Я что-то упустил?Есть ли способ обойти это?