В каких случаях успешные вызовы TwitterAuthClient.requestEmail () возвращают пустые или пустые строки электронной почты? - PullRequest
0 голосов
/ 04 марта 2019

У меня проблема с аутентификационным клиентом Twitter, которую я не могу воспроизвести на своем устройстве, но клиент, у которого возникла эта проблема, прислал мне видео.Он ввел адрес электронной почты и пароль в Twitter Auth Activity, но по какой-то причине в диалоговом окне с предупреждением указывается, что строка электронной почты, возвращаемая TwitterAuthClient.requestEmail(), либо пуста, либо пуста.

Iне могу воспроизвести это на моем устройстве, поэтому мне нужно знать, когда или как этот вызов может вернуть пустую или пустую строку электронной почты.

Код, который я использовал для входа в систему:

@Override
public void onTwitterLogin() {
    REQ_STATUS = REQ_TW;
    mTwitterAuthClient.authorize(this, new com.twitter.sdk.android.core.Callback<TwitterSession>() {

        @Override
        public void success(Result<TwitterSession> twitterSessionResult) {
            Log.i("twitter_login_success", twitterSessionResult.data+"");
            twitter_token = twitterSessionResult.data.getAuthToken().token;
            twitter_secret = twitterSessionResult.data.getAuthToken().secret;
            twitter_id = twitterSessionResult.data.getUserId();
            twitter_name = twitterSessionResult.data.getUserName();
            mTwitterAuthClient.requestEmail(twitterSessionResult.data, new Callback<String>() {
                @Override
                public void success(Result<String> result) {
                    twitter_email = result.data;
                    Log.i("twitter_email", result.response+" "+result.data);
                    doLoginTwitter(twitter_token, twitter_secret, twitter_id, twitter_name, twitter_email);
                }

                @Override
                public void failure(TwitterException e) {
                    Log.i("twitter_email", e.getMessage());
                    e.printStackTrace();
                }
            });
        }

        @Override
        public void failure(TwitterException e) {
            Log.i("twitter_login_fail", e.getMessage()+"");
            e.printStackTrace();
        }
    });
}

private void doLoginTwitter(final String token, final String secret, final long id, final String username, final String email) {

    if (email == null || email.isEmpty()) {
        //This condition was somehow true, indicating that mTwitterAuthClient.requestEmail() returned null or an empty string
        showAlertDialog(R.string.warn, R.string.err_twitter_email);
        return;
    }

    AnalyticsUtils.trackAction("login tw");
    final ProgressDialog dialog = new ProgressDialog(this);
    dialog.setMessage(getString(R.string.signing_in));
    showProgressDialog(dialog);

    //...rest of the code for local server validation using the E-mail and other credentials in the TwitterSession result
}
...