Блокировка Auth0 для android, не возвращающая UserProfile при аутентификации

Я использую Lock для предоставления функций входа в мое приложение Android для пользователей.

Вот мой код:   закрытый замок,

private LocalBroadcastManager broadcastManager;

private BroadcastReceiver authenticationReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        String idToken = intent.getStringExtra("com.auth0.android.lock.extra.IdToken");
        String tokenType = intent.getStringExtra("com.auth0.android.lock.extra.TokenType");
        Log.i(TAG, "User  logged in with " + idToken + " "+ tokenType);
    }
};

//Not sure use of this callback  though its not being called anytime.
private LockCallback callback = new AuthenticationCallback() {
    @Override
    public void onAuthentication(Credentials credentials) {
        Log.d(TAG, "Authenticated");
    }

    @Override
    public void onCanceled() {
        Log.d(TAG, "Authentication cancelled");
    }

    @Override
    public void onError(LockException error) {
        Log.d(TAG, "Authentication Error");
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Auth0 auth0 = new Auth0(getString(R.string.auth0_clientId), getString(R.string.auth0_domain));
    this.lock = Lock.newBuilder(auth0, callback)
            .build();
    broadcastManager = LocalBroadcastManager.getInstance(this);
    broadcastManager.registerReceiver(authenticationReceiver, new IntentFilter("com.auth0.android.lock.action.Authentication"));
    startActivity(this.lock.newIntent(this));
}

У меня есть два вопроса: 1). Прежде всего, я не понимаю, зачем ему нужен обратный вызов, хотя он не вызывает обратный вызов даже после успешной проверки подлинности. 2). Должен ли LocalBroadcastManager получать ответ с информацией о профиле пользователя вместо информации о токенах?

Я использую Lock версию: com.auth0.android:lock:2.0.0-beta.2

Есть ли лучший способ сделать это?

Спасибо заранее!

Ответ 1

Вы пробовали метод onSuccess? Я не могу видеть в вашем коде, почему он не выполняется после успешной попытки.

Переопределите onSuccess метод в LockCallback callback, это вернет UserProfile.

/**
 * Callback for authentication API calls to Auth0 API.
 */
public interface AuthenticationCallback extends Callback {

    /**
     * Called when authentication is successful.
     * It might include user profile and token information.
     * @param profile User profile information or null.
     * @param token User token information (e.g. id_token).
     */
    void onSuccess(UserProfile profile, Token token);

}

Источник