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.
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)
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());
loginResult.getAccessToken().getUserId()
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());
}
}
});
}
}
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();
}
}
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.
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;