我正在开发一个应用程序,我在其中使用Facebook
来自 SDK 的登录按钮。我能够得到access_token
用户,但我userID
也想要。我几乎尝试了一切,但没有成功。我已经使用 facebook 教程来实现这一点。这是链接:Facebook 登录按钮
请帮助我userID
从同一个登录按钮获取。
任何形式的帮助将不胜感激。
我正在开发一个应用程序,我在其中使用Facebook
来自 SDK 的登录按钮。我能够得到access_token
用户,但我userID
也想要。我几乎尝试了一切,但没有成功。我已经使用 facebook 教程来实现这一点。这是链接:Facebook 登录按钮
请帮助我userID
从同一个登录按钮获取。
任何形式的帮助将不胜感激。
使用 FB Profile 类的 getId 方法(Facebook SDK 4.0)。
Profile profile = Profile.getCurrentProfile();
System.out.println(profile.getFirstName());
System.out.println(profile.getId());
loginResult.getAccessToken().getUserId()
登录成功后,需要调用以下代码。您可以获取带有 id 的登录用户详细信息作为响应。
Session session = Session.getActiveSession();
Request request = Request.newGraphPathRequest(session, "me", null);
com.facebook.Response response = Request.executeAndWait(request)
您应该使用新的 facebook sdk 3.0 和
@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());
}
}
});
}
}
根据使用已弃用 API 的 @Ketan Mehta ( https://stackoverflow.com/a/17397931/624109 ) 的回答,您应该使用以下代码:
@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();
}
}
由于这些所有答案都是针对较旧的 SDK 的,因此对于 SDK 4.0,这里是代码
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");
}
});
我正在寻找同样的东西,看起来 Session 对象不再可访问,所以上面是获取用户配置文件和用户 ID 的新方法。
Facebook 图形 API 允许您进行返回 JSON 的调用,您可以在 Android 中使用 JSONObject 解析它,如下面的代码所示。
JSONObject me = new JSONObject(fb.request("me"));
String id = me.getString("id");
您可以使用以下代码获取用户 ID:
document.getElementById('status').innerHTML =
'Welcome ' + response.name + '!' + "<br />"+
'Your user ID is : ' + response.id;