簡體   English   中英

Android如何在使用Twitter進行身份驗證后獲取用戶的全名

[英]Android how to get user's full name after authentication with Twitter

我按照以下步驟創建了Twitter登錄http://docs.fabric.io/android/twitter/authentication.html並顯示用戶名除用戶的全名外。

這是我的代碼

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

請問我該如何獲得用戶的全名?

像這樣使用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 ....
        }

    });

您可以使用此功能獲取用戶名:

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

登錄成功后,在您的public void success(Result<TwitterSession> result)方法中,使用此代碼。

@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();

            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM