Java 如何使用facebook sdk从facebook个人资料中获取id和名称?
我知道使用JSON的方法,我已经读了很多关于如何使用JSON的书,但是我仍然不知道应该把JSON代码放在哪里,这样我才能得到id和名称,因为我尝试的一切都不起作用(为空)。你们能给我一个建议,我应该在哪里要求身份证和姓名,这样我才能真正得到它们吗? 这是我的主要课程中与facebook相关的所有内容:Java 如何使用facebook sdk从facebook个人资料中获取id和名称?,java,android,facebook,sdk,Java,Android,Facebook,Sdk,我知道使用JSON的方法,我已经读了很多关于如何使用JSON的书,但是我仍然不知道应该把JSON代码放在哪里,这样我才能得到id和名称,因为我尝试的一切都不起作用(为空)。你们能给我一个建议,我应该在哪里要求身份证和姓名,这样我才能真正得到它们吗? 这是我的主要课程中与facebook相关的所有内容: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { this
@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;
}
它仍然是空的。请帮忙。试试这个:
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);
我希望这将对您有所帮助。您可以使用以下内容:(此代码使用的是Facebook SDK 3.02)
用户id:
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\u ID
和profileName
是字符串。这就是解决方案
String response = facebook.request("me", param, "GET");
希望它能帮助有类似问题的人。在parseJson处出错:不适用于参数(void)。能否发布错误语句并发布meRequestListener()代码错误:类型Util中的方法parseJson(字符串)不适用于参数(void)。还有meRequestListener()代码,只是还有一些实现的方法是空的。在类Util?mm中有这个公共静态void parseJson(字符串响应)方法吗。。我该如何检查它呢?好的,我让它工作并在login()方法中添加了它,但我在textview中仍然得到空toast和null。你有没有在onComplete方法中获得id并设置textfield?就像我说的,我在login()方法中的FacebookConnector.java中输入了代码,然后用getUserName()和getUserId()获得了名称和id所以我可以在我的主要活动中设置它们。我无法在那里设置textfield,因为它不是活动。由于internet的原因,我给出的代码需要一些时间才能获取user_ID和userProfileName。如果您想使用user_id执行某些操作,那么必须首先在onComplete()方法中获取它。这意味着你必须在
user\u ID=user.getId()之后调用一个函数(在这个函数中你编写你想要的代码)代码>此行。是的,我确保在使用它们之前先获取名称和id。我在单击按钮时强制登录(),该按钮将向我抛出toast,toast现在是“null null”而不是空的。仍然不能按要求工作。