4

我想在 android twitter 成功登录后获取所有用户信息。
对于 twiiter 登录,我使用织物。这是我的代码。

在 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);
        }
    });

和功能 twitter_login() 是

public void twitter_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

    /*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);
                }
            });
}  

在 virifyCredentials() 它抛出一个错误 new Callback() can not apply。
请建议我如何使用这种方法。
提前致谢。

4

1 回答 1

7

我通过尝试找到了解决方案:

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);
        }
    });
}
于 2016-08-29T09:05:59.787 回答