簡體   English   中英

如何使用Facebook SDK從Facebook個人資料獲取ID和名稱?

[英]How to get id and name from facebook profile using facebook sdk?

我知道這種方式正在使用JSON,而且我已經閱讀了很多有關如何使用JSON的信息,但是我仍然不知道在哪里必須放置JSON代碼,以便我可以獲取ID和名稱,因為我嘗試的所有操作都沒有做到這一點。 t工作(為空)。 你們能給我建議我在哪里索取ID和名稱,以便我真正得到它們嗎? 這是我與Facebook相關的主要課程中的所有內容:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    this.facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data);
}

@Override
protected void onResume() {
    super.onResume();
    updateLoginStatus();
}

public void updateLoginStatus() {
    loginStatus.setText("Logged into Facebook as "+        facebookConnector.getUserName() + facebookConnector.getFacebook().isSessionValid());
}

public void postMessage() {

    if (facebookConnector.getFacebook().isSessionValid()) {
        postMessageInThread();
    } else {
        SessionEvents.AuthListener listener = new SessionEvents.AuthListener() {

            @Override
            public void onAuthSucceed() {
                postMessageInThread();
            }

            @Override
            public void onAuthFail(String error) {

            }
        };
        SessionEvents.addAuthListener(listener);
        facebookConnector.login();

    }
}

private void postMessageInThread() {
    Thread t = new Thread() {
        public void run() {

            try {
                facebookConnector.postMessageOnWall("test");
                mFacebookHandler.post(mUpdateFacebookNotification);
            } catch (Exception ex) {
                Log.e(TAG, "Error sending msg",ex);
            }
        }
    };
    t.start();
}

private void clearCredentials() {
    try {
        facebookConnector.getFacebook().logout(getApplicationContext());
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

最后我嘗試了

 AsyncFacebookRunner myAsyncRunner = new AsyncFacebookRunner(facebook);
    myAsyncRunner.request("me", new meRequestListener());

接着

 public class meRequestListener implements RequestListener {

    public void onComplete(String response, Object state) {

        fbName = response;
    }

當我得到的字符串

public String getUserName () {
    return fbName;
}

它仍然為空。 請幫助。

您可以使用此代碼:(此代碼使用Facebook SDK 3.02)

用戶身份:

final Session session = Session.getActiveSession();
    if (session != null && session.isOpened()) {
        // If the session is open, make an API call to get user data
        // and define a new callback to handle the response
        Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {
            @Override
            public void onCompleted(GraphUser user, Response response) {
                // If the response is successful
                if (session == Session.getActiveSession()) {
                    if (user != null) {
                        user_ID = user.getId();//user id
                        profileName = user.getName();//user's profile name
                        userNameView.setText(user.getName());
                    }   
                }   
            }   
        }); 
        Request.executeBatchAsync(request);
    }  

user_IDprofileName是字符串。

嘗試這個:

AsyncFacebookRunner myAsyncRunner = new AsyncFacebookRunner(facebook);
JSONObject json = Util.parseJson(myAsyncRunner.request("me", new meRequestListener()));
                    String facebookID = json.getString("id");
                    String firstName = json.getString("name");                  
                    System.out.println("Details: "+id+" "+name);

希望對您有幫助。

這是解決方案

String response = facebook.request("me", param, "GET");

希望它對遇到類似問題的人有所幫助。

暫無
暫無

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

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