Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get email id twitter integration

i am using twitter integration using fabric, now issue is i am able to get all the details of user except email address. following is my code, can any one help me with that

public void login(Result<TwitterSession> result) {

        //Creating a twitter session with result's data
        TwitterSession session = result.data;

        //Getting the username from session
        final String username = session.getUserName();

        //This code will fetch the profile image URL
        //Getting the account service of the user logged in
        Call<User> userResult = Twitter.getApiClient(session).getAccountService().verifyCredentials(true, false);
        userResult.enqueue(new Callback<User>() {

            @Override
            public void failure(TwitterException e) {

            }

            @Override
            public void success(Result<User> userResult) {

                User user = userResult.data;
                String twitterImage = user.profileImageUrl;

                try {
                    Log.d("imageurl", user.profileImageUrl);
                    Log.d("name", user.name);
                    System.out.println("Twitter Email"+user.email);
                    //Log.d("email", user.email);
                    Log.d("des", user.description);
                    Log.d("followers ", String.valueOf(user.followersCount));
                    Log.d("createdAt", user.createdAt);
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }

        });
    }
like image 560
chris Avatar asked Jan 31 '26 10:01

chris


2 Answers

This is how I fetched the user email of an user:

final TwitterSession twitterSession = result.data;
twitterAuthClient.requestEmail(twitterSession, new com.twitter.sdk.android.core.Callback<String>() {
    @Override
    public void success(Result<String> emailResult) {
        String email = emailResult.data;
        // ...
    }

    @Override
    public void failure(TwitterException e) {
        callback.onTwitterSignInFailed(e);
    }
});

So you have to call TwitterAuthClient.requestEmail() once you got a successful Result<TwitterSession> upon authorization.

Be aware that you'll have to contact Twitter support to enable access to users' email for your app. An error message with this will show up.

like image 77
Eduard B. Avatar answered Feb 02 '26 23:02

Eduard B.


Here is my code to get details from twitter:

   private void intializeTwitterUI() {
      loginButton = (TwitterLoginButton)             
      findViewById(R.id.twitter_login_button);
      loginButton.setCallback(new Callback<TwitterSession>() {
        @Override
        public void success(Result<TwitterSession> result) {
            // The TwitterSession is also available through:
            // TWITTER.getInstance().core.getSessionManager().getActiveSession()
            TwitterSession session = result.data;
            // TODO: Remove toast and use the TwitterSession's userID
            // with your app's user model
            String msg = "Twitter: @" + session.getUserName() + " logged in! (#" + session.getUserId() + ")";
            Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
            /**
             *
             */
            AccountService _AccountService = Twitter.getApiClient(result.data).getAccountService();
            _AccountService.verifyCredentials(true, true).enqueue(new retrofit2.Callback<User>() {
                @Override
                public void onResponse(Call<User> call, retrofit2.Response<User> response) {
                    Log.d(TAG, "Twitter user is: " + response.toString());
                    Log.d(TAG, "Twitter-Email" + response.body().email);
                    Log.d(TAG, "Twitter-profileImage" + response.body().profileImageUrl);
                    Log.d(TAG, "Twitter-ID" + response.body().id);
                    twitterDetails = response.body().email + "," + response.body().profileImageUrl + "," + response.body().id;

                }

                @Override
                public void onFailure(Call<User> call, Throwable t) {
                    Log.e(TAG, "verifyCredentials failed! " + t.getLocalizedMessage());
                }
            });



        }
like image 42
Sandeep Kharat Avatar answered Feb 03 '26 00:02

Sandeep Kharat