web-dev-qa-db-de.com

So erhalten Sie die FB-Benutzer-ID mithilfe der Facebook-Anmeldeschaltfläche in der Android-Anwendung

Ich entwickle eine Anwendung, in der ich die Facebook-Anmeldeschaltfläche von SDK verwende. Ich kann access_token des Benutzers abrufen, möchte aber auch userID. Ich habe fast alles versucht, war aber nicht erfolgreich. Ich habe dazu das Facebook-Tutorial benutzt. Hier ist der Link: Facebook Login Button

Bitte helfen Sie mir, userID vom gleichen Login-Button zu bekommen.

Jede Art von Hilfe wird geschätzt.

11
Anupam

Nach erfolgreicher Anmeldung müssen Sie den folgenden Code aufrufen. Sie können die angemeldeten Benutzerdetails mit der ID als Antwort erhalten.

Session session = Session.getActiveSession();
Request request = Request.newGraphPathRequest(session, "me", null);
com.facebook.Response response = Request.executeAndWait(request)
4
Santhosh

Verwenden Sie die getId-Methode der FB-Profilklasse (Facebook SDK 4.0).

  Profile profile = Profile.getCurrentProfile();
  System.out.println(profile.getFirstName());
  System.out.println(profile.getId());
11
Deepika
loginResult.getAccessToken().getUserId()
7

Sie sollten neue Facebook SDK 3.0 und verwendet werden 

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
        if (Session.getActiveSession().isOpened()) {
            // Request user data and show the results
            Request.executeMeRequestAsync(Session.getActiveSession(), new Request.GraphUserCallback() {

                @Override
                public void onCompleted(GraphUser user, Response response) {
                    // TODO Auto-generated method stub
                    if (user != null) {
                        // Display the parsed user info
                        Log.v(TAG, "Response : " + response);
                        Log.v(TAG, "UserID : " + user.getId());
                        Log.v(TAG, "User FirstName : " + user.getFirstName());

                    }
                }

            });
        }
    }
4
Ketan Mehta

Basierend auf der Antwort von @Ketan Mehta ( https://stackoverflow.com/a/17397931/624109 ), die eine veraltete API verwendet, sollten Sie den folgenden Code verwenden:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);

    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);

    if (Session.getActiveSession().isOpened())
    {
        // Request user data and show the results
        Request.newMeRequest(Session.getActiveSession(), new GraphUserCallback()
        {
            @Override
            public void onCompleted(GraphUser user, Response response)
            {
                if (null != user)
                {
                    // Display the parsed user info
                    Log.v(TAG, "Response : " + response);
                    Log.v(TAG, "UserID : " + user.getId());
                    Log.v(TAG, "User FirstName : " + user.getFirstName());

                }
            }
        }).executeAsync();
    }
}
3
Muzikant

Da diese Antworten alle für ältere SDKs gelten, gibt es für SDK 4.0 den Code 

loginButton.registerCallback(callbackManager, new    FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
            Profile profile = Profile.getCurrentProfile();

            Log.d("facebook",profile.getId());
        }

        @Override
        public void onCancel() {
            // App code
            Log.d("facebook","failed");
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
            Log.d("facebook","failed");
        }
    });

ich habe nach dem gleichen Objekt gesucht, das aussieht, als wäre das Session-Objekt nicht mehr zugänglich. Daher ist oben die neue Möglichkeit, das Benutzerprofil und die Benutzer-ID zu erhalten.

3

Mit der Facebook-Grafik-API können Sie Anrufe ausführen, die JSON zurückgeben, die Sie in Android mit einem JSONObject wie dem folgenden Code analysieren können.

JSONObject me = new JSONObject(fb.request("me"));
String id = me.getString("id");

Sie können die Benutzer-ID mit diesem Code erhalten: 

document.getElementById('status').innerHTML =
   'Welcome ' + response.name + '!' + "<br />"+
   'Your user ID is : ' + response.id;
1
HQtunes.com