Logging into twitter using materials in android AccountService.verifyCredentials () does not accept the new Callback <User> () as a parameter

I want to get all the user information after logging into android twitter successfully. I use fabrics to enter twiiter. here is my code.

in onCreate ()

twitterLoginButton = (TwitterLoginButton) findViewById(R.id.twitterLogin);

twitterLoginButton.setCallback(new Callback<TwitterSession>() {
        @Override
        public void success(Result<TwitterSession> result) {
            //If login succeeds passing the Calling the login method and passing Result object
            twitter_login(result);
        }

        @Override
        public void failure(TwitterException exception) {
            //If failure occurs while login handle it here
            Log.d("TwitterKit", "Login with Twitter failure", exception);
        }
    });

and twitter_login () function is

public void twitter_login(Result<TwitterSession> result) {

    //Creating a twitter session with result 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

    /*AccountService ac = Twitter.getApiClient(result.data).getAccountService();
    ac.verifyCredentials(true, true);*/

    Twitter.getApiClient(session)
            .getAccountService()
            .verifyCredentials(true, false, new Callback<User>() {

                @Override
                public void failure(TwitterException e) {
                    //If any error occurs handle it here
                }

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

                    String imageUrl = userResult.data.profileImageUrl;
                    String email = userResult.data.email;
                    String Name = userResult.data.name;
                    long userid = userResult.data.id;
                    String username = userResult.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);
                }
            });
}  

in virifyCredentials () it throws a new callback () error cannot be applied.
please suggest me how to use this method.
thanks in advance.

+4
source share
1 answer

I found a solution by trying:

public void success(Result<TwitterSession> result)
{
    TwitterSession   session = result.data;
    Twitter          twitter = Twitter.getInstance();
    TwitterApiClient api     = twitter.core.getApiClient(session);
    AccountService   service = api.getAccountService();
    Call<User>       user    = service.verifyCredentials(true, true);

    user.enqueue(new Callback<User>()
    {
        @Override
        public void success(Result<User> userResult)
        {
            String name = userResult.data.name;
            String email = userResult.data.email;

            // _normal (48x48px) | _bigger (73x73px) | _mini (24x24px)
            String photoUrlNormalSize   = userResult.data.profileImageUrl;
            String photoUrlBiggerSize   = userResult.data.profileImageUrl.replace("_normal", "_bigger");
            String photoUrlMiniSize     = userResult.data.profileImageUrl.replace("_normal", "_mini");
            String photoUrlOriginalSize = userResult.data.profileImageUrl.replace("_normal", "");
        }

        @Override
        public void failure(TwitterException exc)
        {
            Log.d("TwitterKit", "Verify Credentials Failure", exc);
        }
    });
}
+7
source

Source: https://habr.com/ru/post/1651407/


All Articles