Как я могу получить адрес электронной почты пользователя через twitter API? Я использую Twitter4j для входа с помощью twitter
Получите адрес электронной почты пользователя из Twitter (Android)
Ответы (5)
Надеюсь, это сработает, пожалуйста, используйте следующий код в вашем запросе результат обратного звонка
TwitterloginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
session = result.data;
AccountService ac = Twitter.getApiClient(result.data).getAccountService();
ac.verifyCredentials(true, true, new Callback<User>() {
@Override
public void success(Result<com.twitter.sdk.android.core.models.User> result) {
String imageUrl = result.data.profileImageUrl;
String email = result.data.email;
String Name = result.data.name;
long userid = result.data.id;
String username = result.data.screenName;
System.out.println(imageUrl);
System.out.println("EMAIL:" + email);
System.out.println("Name:" + Name);
System.out.println("ID:" + userid);
System.out.println("Username:" + username);
}
@Override
public void failure(TwitterException e) {
}
});
проверьте эти ссылки
https://dev.twitter.com/twitterkit/android/installation
https://dev.twitter.com/twitterkit/android/log-in-with-twitter
Напишите ниже код после успешного входа в систему
TwitterAuthClient authClient = new TwitterAuthClient();
authClient.requestEmail(session, new Callback<String>() {
@Override
public void success(Result<String> result) {
// Do something with the result, which provides the email address
}
@Override
public void failure(TwitterException exception) {
// Do something on failure
}
});
прежде всего убедитесь, что вы активировали Request email addresses from users
в своем приложении Twitter Permissions
в разделе
затем следуйте инструкциям по документации Twitter:
1. Процесс установки: просто импортирует SDK-пакет twitter
и я использую только основной пакет
compile 'com.twitter.sdk.android:twitter-core:3.1.1'
Инициализируйте Twitter Kit в своем методе Activity onCreate
Twitter.initialize(this);
Добавьте свой идентификатор приложения и секрет в strings.xml
файл
<string android:name="com.twitter.sdk.android.CONSUMER_KEY">XXXXXXXXXXX</string>
<string android:name="com.twitter.sdk.android.CONSUMER_SECRET">XXXXXXXXXXX</string>
2. Добавить кнопку :
<com.twitter.sdk.android.core.identity.TwitterLoginButton
android:id="@+id/twitter_connect"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
HINT: you can use a custom button just follow this simple answer
private TwitterLoginButton twitterBtn;
...
twitterBtn = (TwitterLoginButton) findViewById(R.id.twitter_connect);
twitterBtn.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
// Do something with result, which provides a TwitterSession for making API calls
// which is do the callback from twitter to get the Email
TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
TwitterAuthToken authToken = session.getAuthToken();
String token = authToken.token;
String secret = authToken.secret;
TwitterAuthClient authClient = new TwitterAuthClient();
authClient.requestEmail(session, new Callback<String>() {
@Override
public void success(Result<String> result) {
// Do something with the result, which provides the email address
// the email is saved in the result variable 'result.data'
Toast.makeText(getBaseContext(), "Email" + result.data, Toast.LENGTH_LONG).show();
}
@Override
public void failure(TwitterException exception) {
// Do something on failure
}
});
}
@Override
public void failure(TwitterException exception) {
// Do something on failure
}
});
Затем передайте результат действия аутентификации обратно на кнопку:
// Pass the activity result to the login button.
twitterBtn.onActivityResult(requestCode, resultCode, data);
вот так:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Pass the activity result to the login button.
twitterBtn.onActivityResult(requestCode, resultCode, data);
}
Здесь Twitter sdk поможет вам предоставить электронную почту, вам просто нужно предоставить разрешение на запрос электронной почты. Twitter sdk проверит видимость электронного письма в вашей учетной записи Twitter. Если у него есть разрешение, он предоставит вам электронное письмо, которое нам нужно обработать, если оно не отправит электронное письмо.
client.requestEmail(twitterSession, new Callback<String>() {
@Override
public void success(Result<String> result) {
Log.d(TAG, "Twitter success email : " + result.data);
email = result.data;
if (email == null){
}else {
Log.d(TAG,"Email"+ email);
}
}
@Override
public void failure(TwitterException exception) {
Log.d(TAG, "Twitter failed email : " + exception);
}
});
Чтобы получить электронную почту Twitter и URL-адрес изображения профиля, имя пользователя и идентификатор для вызова метода requestEmail.
Также Вы можете разрешить запрос по электронной почте в своей учетной записи разработчика в Twitter. См. Изображения ниже.
Используйте код ниже, чтобы получить информацию о пользователе.
btnTwitterLogin.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
TwitterAuthToken authToken = session.getAuthToken();
TwitterAuthClient authClient = new TwitterAuthClient();
authClient.requestEmail(session, new Callback<String>() {
@Override
public void success(Result<String> result) {
String email =result.data;
String token = authToken.token;
String secret = authToken.secret;
String username = session.getUserName();
long userId = session.getUserId();
Log.e("neem", "success: \n Token => " + token + "\n Secret: " + secret + " \n Username: " + username + "\n Userid: " + userId+" \n Email: "+email);
}
@Override
public void failure(TwitterException exception) {
Log.e("neem", "failure: "+exception.getMessage() );
}
});
TwitterCore.getInstance().getApiClient(result.data).getAccountService().verifyCredentials(false,true,false).enqueue(new Callback<User>() {
@Override
public void success(Result<User> userResult) {
try {
String imageUrl = userResult.data.profileImageUrl;
String username = userResult.data.screenName;
Log.e("neem", "acount services: imageurl: "+imageUrl+"\n username: "+username );
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void failure(TwitterException e) {
}
});
}
@Override
public void failure(TwitterException exception) {
ShowToast(mcontext, "Login failed due to: \n "+exception.getMessage());
}
});