У меня проблема с аутентификационным клиентом 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
}