2015-07-28 115 views
3

我有一个按此步骤创建的Twitter登录http://docs.fabric.io/android/twitter/authentication.html,它显示用户名,除了用户的全名。Android如何在通过Twitter身份验证后获取用户的全名

这是我的代码如下

loginButton.setCallback(new Callback<TwitterSession>() { 
      @Override 
      public void success(Result<TwitterSession> result) { 
       // Do something with result, which provides a TwitterSession for making API calls 
       TwitterSession session = Twitter.getSessionManager().getActiveSession(); 
       TwitterAuthToken authToken = session.getAuthToken(); 
       String token = authToken.token; 
       String secret = authToken.secret; 

       long userID = result.data.getUserId(); 

       //This throws an Error Cannot find symbol showUser() 
       User user = twitter.showUser(userID); 

       //This throws error as well 
       String fullname= user.getName(); 


       Log.d("login:", "twitter:success"); 
       Log.d("username", result.data.getUserName()); 
       Log.d("full name", fullname); 

      } 

      @Override 
      public void failure(TwitterException exception) { 
       // Do something on failure 
      } 
     }); 

请我究竟能得到用户的全名?

+0

使用TwitterApiClient:https://docs.fabric.io/android/twitter /access-rest-api.html –

回答

0

您可以使用此功能让用户名:

public void processToken(String callbackUrl) { 
     mProgressDlg.setMessage("Finalizing ..."); 
     mProgressDlg.show(); 
     final String verifier = getVerifier(callbackUrl); 
     new Thread() { 
      @Override 
      public void run() { 
       int what = 1; 

       try { 
        mHttpOauthprovider.retrieveAccessToken(mHttpOauthConsumer, 
          verifier); 

        mAccessToken = new AccessToken(
          mHttpOauthConsumer.getToken(), 
          mHttpOauthConsumer.getTokenSecret()); 

        configureToken(); 

        User user = mTwitter.verifyCredentials(); 

        Log.i("user.getName()="+user.getName(), "786"); 
        try{ 
         firstName=user.getName().split(" ")[0]; 
         lastName=user.getName().split(" ")[1]; 
        }catch(Exception e){ 
         e.printStackTrace(); 
         firstName = user.getName(); 
         lastName = ""; 
        } 
        Log.i("firstName="+firstName+" lastName="+lastName, "786"); 
        UserId=user.getId(); 

        what = 0; 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

       mHandler.sendMessage(mHandler.obtainMessage(what, 2, 0)); 
      } 
     }.start(); 
    } 
+0

感谢@Ketan,但没有一个更简单的方法来做到这一点? –

3

使用TwitterApiClient和用户是这样的:

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

     @Override 
     public void failure(TwitterException e) { 
     } 

     @Override 
     public void success(Result<User> userResult) { 
      User user = userResult.data; 
      .... access User fields .... 
     } 

    }); 
+0

它显示没有这样的verifyCredentials方法。请你能告诉我这里有什么问题吗? –

+0

我们需要查看您的代码。你可能想发布你自己的问题,并从这里链接到它。 –

相关问题