Получите адрес электронной почты пользователя из Twitter (Android)

Как я могу получить адрес электронной почты пользователя через twitter API? Я использую Twitter4j для входа с помощью twitter


person Abhilash    schedule 19.03.2015    source источник
comment
возможный дубликат электронной почты пользователя Twitter в Twitter4j   -  person Daniel Nugent    schedule 19.03.2015
comment
Также см. Эту ссылку: dev.twitter.com/twitter-kit/android/ электронная почта-запрос   -  person Daniel Nugent    schedule 19.03.2015
comment
@ DanielNugent .. ваша ссылка полезна, но какой метод мне следует использовать в случае twitter4j?   -  person Abhilash    schedule 19.03.2015
comment
Кроме того, для первой ссылки он дает мне ошибку документа XML, когда я ввожу свое имя пользователя @DanielNugent   -  person Abhilash    schedule 19.03.2015
comment
Взгляните на это: twittercommunity.com/ т /   -  person Daniel Nugent    schedule 19.03.2015
comment
@DanielNugent ... да, есть способ использовать класс TwitterAuthClient. Однако вот в чем проблема! Я не использую Fabric и Core Twitter API, потому что мне не удалось успешно импортировать его библиотеку в свой файл сборки gradle. Поэтому я перешел на twitter4j. Но для twitter4j нет возможности получать почту !!! Странный :\   -  person Abhilash    schedule 19.03.2015
comment
у вас есть сеанс? войдите в свое приложение через твиттер, в противном случае вы не сможете получить адрес электронной почты.   -  person Mounir Elfassi    schedule 20.03.2015


Ответы (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) {

                    }
                });
person Dashrath Rathod    schedule 30.06.2016

проверьте эти ссылки

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
}
});
person Anita Barbade    schedule 16.06.2017

прежде всего убедитесь, что вы активировали 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);
}
person Biskrem Muhammad    schedule 14.12.2017

Здесь 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);
        }
    });
person rohit panhalkar    schedule 16.03.2018
comment
Клиент TwitterAuthClient = новый TwitterAuthClient (); - person rohit panhalkar; 16.03.2018
comment
пожалуйста, добавьте немного пояснений - person ShivaGaire; 16.03.2018
comment
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно как и почему он решает проблему, улучшило бы долгосрочную ценность ответа. - person Alexander; 16.03.2018
comment
Здесь Twitter sdk поможет вам предоставить электронную почту, вам просто нужно предоставить разрешение на запрос электронной почты. Twitter sdk проверит видимость электронного письма в вашей учетной записи Twitter. Если у него есть разрешение, он предоставит вам электронное письмо, которое нам нужно обработать, если оно не отправит электронное письмо. - person rohit panhalkar; 09.04.2018

Чтобы получить электронную почту Twitter и URL-адрес изображения профиля, имя пользователя и идентификатор для вызова метода requestEmail.

Также Вы можете разрешить запрос по электронной почте в своей учетной записи разработчика в Twitter. См. Изображения ниже.

Получить идентификатор электронной почты при входе в 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());
        }
    });
person CodeInsideCoffee    schedule 20.05.2020