Amplify身份验证事件在安卓设备上无法正常工作。

huangapple go评论115阅读模式
英文:

Amplify Auth events don't work in android

问题

我正在开发一个使用AWS Amplify库进行身份验证的应用程序。
我尝试通过查看Amplify的身份验证事件来检查登录状态,但是它不起作用。
我尝试通过logcat进行验证,但它只显示了获取输出。

  1. Amplify.Auth.fetchAuthSession(
  2. result -> Log.i("AmplifyQuickstart", result.toString()),
  3. error -> Log.e("AmplifyQuickstart", error.toString())
  4. );
  5. Amplify.Hub.subscribe(HubChannel.AUTH, hubEvent -> {
  6. if (hubEvent.getName().equals(InitializationStatus.SUCCEEDED.toString())) {
  7. Log.i("AuthQuickstart", "身份验证成功初始化");
  8. } else if (hubEvent.getName().equals(InitializationStatus.FAILED.toString())) {
  9. Log.i("AuthQuickstart", "身份验证未能成功初始化");
  10. } else {
  11. switch (AuthChannelEventName.valueOf(hubEvent.getName())) {
  12. case SIGNED_IN:
  13. Log.i("AuthQuickstart", "刚刚完成登录。");
  14. break;
  15. case SIGNED_OUT:
  16. Log.i("AuthQuickstart", "刚刚登出。");
  17. break;
  18. case SESSION_EXPIRED:
  19. Log.i("AuthQuickstart", "身份验证会话刚刚过期。");
  20. break;
  21. default:
  22. Log.w("AuthQuickstart", "未处理的身份验证事件:" + AuthChannelEventName.valueOf(hubEvent.getName()));
  23. break;
  24. }
  25. }
  26. });
英文:

I'm working in on an app that uses authentication from the AWS Amplify library.
I tried to check the sign-in state by looking at Amplify's auth events, but it
doesn't work. I tried to verify with logcat, but it only shows me the output of
the fetch.

  1. Amplify.Auth.fetchAuthSession(
  2. result -> Log.i("AmplifyQuickstart", result.toString()),
  3. error -> Log.e("AmplifyQuickstart", error.toString())
  4. );
  5. Amplify.Hub.subscribe(HubChannel.AUTH, hubEvent -> {
  6. if (hubEvent.getName().equals(InitializationStatus.SUCCEEDED.toString())) {
  7. Log.i("AuthQuickstart", "Auth successfully initialized");
  8. } else if (hubEvent.getName().equals(InitializationStatus.FAILED.toString())) {
  9. Log.i("AuthQuickstart", "Auth failed to succeed");
  10. } else {
  11. switch (AuthChannelEventName.valueOf(hubEvent.getName())) {
  12. case SIGNED_IN:
  13. Log.i("AuthQuickstart", "Auth just became signed in.");
  14. break;
  15. case SIGNED_OUT:
  16. Log.i("AuthQuickstart", "Auth just became signed out.");
  17. break;
  18. case SESSION_EXPIRED:
  19. Log.i("AuthQuickstart", "Auth session just expired.");
  20. break;
  21. default:
  22. Log.w("AuthQuickstart", "Unhandled Auth Event: " + AuthChannelEventName.valueOf(hubEvent.getName()));
  23. break;
  24. }
  25. }
  26. });

答案1

得分: 0

以下是翻译好的部分:

一种我成功解决该问题的方法是将错误 lambda 引用传递给 errorAuthenticationHandle 函数,如下所示:

  1. Amplify.Auth.signIn(this.userName, password,
  2. result -> Log.i("AuthQuickstart", result.isSignInComplete() ?
  3. "登录成功" : "登录未完成"),
  4. this::errorAuthenticationHandle
  5. );
  6. private void errorAuthenticationHandle(AuthException error) {
  7. Log.e("AmplifyQuickstart", error.toString());
  8. switch (getErrorNumber(error)) {
  9. // 服务器要求重置密码
  10. case RESET:
  11. // 一些代码
  12. break;
  13. case FAILED:
  14. // 一些代码
  15. break;
  16. }
  17. }
英文:

One way that I succeed to handle the problem is to pass the error lambda
reference to errorAuthenticationHandle function as follows:

  1. Amplify.Auth.signIn(this.userName, password,
  2. result -> Log.i("AuthQuickstart", result.isSignInComplete() ?
  3. "Sign in succeeded" : "Sign in not complete"),
  4. this::errorAuthenticationHandle
  5. );
  6. private void errorAuthenticationHandle(AuthException error) {
  7. Log.e("AmplifyQuickstart", error.toString());
  8. switch (getErrorNumber(error)) {
  9. // Server require password reset
  10. case RESET:
  11. // Some code
  12. break;
  13. case FAILED:
  14. // Some code
  15. break;
  16. }
  17. }

huangapple
  • 本文由 发表于 2020年8月25日 11:53:36
  • 转载请务必保留本文链接:https://go.coder-hub.com/63571815.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定