openid/OpenYOLO-Android

Confusing behaviuor or bug in providers?

riyaz opened this issue · 6 comments

riyaz commented

Flow tested

  1. Open demo app
  2. Use account from dialog shown
  3. tap back and input email id
  4. save in first provider (1password or google smart lock)
  5. logout it
  6. use account from dialog and pick 1password or google smart lock
  7. login fine

Try the above steps with dashlane and lastpass, but after 6th step its not picking the previously saved password, i verified data in each of the app properly still not auto-logging in.

@StanKocken can you reproduce the behavior described by @riyaz, and determine if it is a bug from your POV?

riyaz commented

This is the sample code and it works fine with 1password and google smart lock, from the stack trace it looks like dashlane is expecting something which is missing

public static void retrievePassword(Activity activity) {
    CredentialClient client = CredentialClient.getInstance(activity);

    CredentialRetrieveRequest request = CredentialRetrieveRequest.fromAuthMethods(AuthenticationMethods.EMAIL);
    Intent retrieveCredentialIntent = client.getCredentialRetrieveIntent(request);
    activity.startActivityForResult(retrieveCredentialIntent, YOLO_RETRIEVE);
  }
 Process: com.dashlane, PID: 28723
 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dashlane/com.dashlane.yolo.CredentialPickerActivity}: java.lang.IllegalArgumentException: expected: is not a null or empty string
  but: was null
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
     at android.app.ActivityThread.-wrap11(Unknown Source:0)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
     at android.os.Handler.dispatchMessage(Handler.java:105)
     at android.os.Looper.loop(Looper.java:164)
     at android.app.ActivityThread.main(ActivityThread.java:6541)
     at java.lang.reflect.Method.invoke(Native Method)
     at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
  Caused by: java.lang.IllegalArgumentException: expected: is not a null or empty string
  but: was null
     at java.lang.reflect.Constructor.newInstance0(Native Method)
     at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
     at org.valid4j.ExceptionOneStringArgumentFactory.newInstance(SourceFile:30)
     at org.valid4j.Validation.validate(SourceFile:110)
     at org.openyolo.a.e.d(SourceFile:331)
     at org.openyolo.a.e.<init>(SourceFile:304)
     at com.dashlane.yolo.h.a(SourceFile:2072)
     at com.dashlane.yolo.CredentialPickerActivity.onCreate(SourceFile:67)
     at android.app.Activity.performCreate(Activity.java:6975)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
      ... 9 more

@riyaz which demo app are you using? "testapp" or "demoapps > passwordlogin"? If you use one of them, can you try with the other?
According to your trace, it seems that the username or email is missing on your Dashlane credential. May be a provider bug but just want to be sure on the steps to reproduce.

riyaz commented

Its my app, not sample, I have one account in dashlane verified it through dashlane app, it has email and password.

Yet to try with sample.

I just checked on my code and it seems that Dashlane is not able to read the username (which can be an email) for one of your credential.

Let me know if you can reproduce it on a sample app or if you want to give me a demo of your app so I can reproduce on my hand.

riyaz commented

In sample i'm able to save but on login dashlane is not even showing, but in my app, able to save, listed in login but crashing.

Will mail you my apk.