Reputation: 4002
I have a Twitter Login created following this steps http://docs.fabric.io/android/twitter/authentication.html and It displays the Username Except the User's Full name.
This is my code below
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
}
});
Please how exactly can I get User's fullname?
Upvotes: 3
Views: 1377
Reputation: 1439
after login success, in your public void success(Result<TwitterSession> result)
method, use this code.
@Override
public void success(Result<TwitterSession> result) {
TwitterSession sess = TwitterCore.getInstance().getSessionManager().getActiveSession();
TwitterApiClient apiClient = new TwitterApiClient(sess);
final Call<com.twitter.sdk.android.core.models.User> getUserCall = apiClient
.getAccountService()
.verifyCredentials(true, false,true);
new Thread(new Runnable() {
@Override
public void run() {
try {
com.twitter.sdk.android.core.models.User user = getUserCall.execute().body();
String realname = user.name;
long realid = user.id;
//similarly you can get user's other properties like location etc
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
Upvotes: 0
Reputation: 17246
Use TwitterApiClient and User like this:
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 ....
}
});
Upvotes: 3
Reputation: 443
You can use this function for getting user name:
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();
}
Upvotes: 0