嘿我每次使用这段代码来获取Facebook的个人资料,但它不适合我......
我正在按照本教程http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/
我不知道这是什么问题,请帮助我。
public void getProfileInformation() {
mAsyncRunner.request("me", new RequestListener() {
@Override
public void onComplete(String response, Object state) {
Log.d("Profile", response);
String json = response;
try {
txt2.setText("testing 124");
JSONObject profile = new JSONObject(json);
// getting name of the user
final String name = profile.getString("name");
// getting email of the user
final String email = profile.getString("email");
txt2.setText("Name: " +name+"Email: " +email);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Name: " + name + "\nEmail: " + email, Toast.LENGTH_LONG).show();
}
});
} catch (JSONException e) {
txt2.setText(e.toString());
e.printStackTrace();
}
logoutFromFacebook();
}
@Override
public void onIOException(IOException e, Object state) {
}
@Override
public void onFileNotFoundException(FileNotFoundException e,
Object state) {
}
@Override
public void onMalformedURLException(MalformedURLException e,
Object state) {
}
@Override
public void onFacebookError(FacebookError e, Object state) {
}
});
}
请帮助我该怎么做..
这些错误:
06-19 06:35:07.180: E/chromium(1759): [ERROR:gl_surface_egl.cc(153)] No suitable EGL configs found.
06-19 06:35:07.180: E/chromium(1759): [ERROR:gl_surface_egl.cc(620)] GLSurfaceEGL::InitializeOneOff failed.
06-19 06:35:07.200: E/chromium(1759): [ERROR:gl_surface_egl.cc(153)] No suitable EGL configs found.
06-19 06:35:07.200: E/chromium(1759): [ERROR:gl_surface_egl.cc(620)] GLSurfaceEGL::InitializeOneOff failed.
06-19 06:35:07.230: E/chromium(1759): [ERROR:gpu_info_collector.cc(86)] gfx::GLSurface::InitializeOneOff() failed
06-19 06:35:12.470: E/chromium(1759): [ERROR:simple_backend_impl.cc(186)] File structure does not match the disk cache backend.
06-19 06:35:12.470: E/chromium(1759): [ERROR:simple_backend_impl.cc(402)] Simple Cache Backend: wrong file structure on disk: /data/data/com.facebook.androidhive/app_webview/Cache
06-19 06:36:38.000: E/chromium(1893): [ERROR:gl_surface_egl.cc(153)] No suitable EGL configs found.
06-19 06:36:38.000: E/chromium(1893): [ERROR:gl_surface_egl.cc(620)] GLSurfaceEGL::InitializeOneOff failed.
06-19 06:36:38.010: E/chromium(1893): [ERROR:gl_surface_egl.cc(153)] No suitable EGL configs found.
06-19 06:36:38.010: E/chromium(1893): [ERROR:gl_surface_egl.cc(620)] GLSurfaceEGL::InitializeOneOff failed.
06-19 06:36:38.010: E/chromium(1893): [ERROR:gpu_info_collector.cc(86)] gfx::GLSurface::InitializeOneOff() failed
06-19 07:36:10.530: E/AndroidRuntime(2428): FATAL EXCEPTION: Thread-94
06-19 07:36:10.530: E/AndroidRuntime(2428): Process: com.facebook.androidhive, PID: 2428
06-19 07:36:10.530: E/AndroidRuntime(2428): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
06-19 07:36:10.530: E/AndroidRuntime(2428): at android.os.Handler.<init>(Handler.java:200)
06-19 07:36:10.530: E/AndroidRuntime(2428): at android.os.Handler.<init>(Handler.java:114)
06-19 07:36:10.530: E/AndroidRuntime(2428): at android.widget.Toast$TN.<init>(Toast.java:327)
06-19 07:36:10.530: E/AndroidRuntime(2428): at android.widget.Toast.<init>(Toast.java:92)
06-19 07:36:10.530: E/AndroidRuntime(2428): at android.widget.Toast.makeText(Toast.java:241)
06-19 07:36:10.530: E/AndroidRuntime(2428): at com.facebook.androidhive.AndroidFacebookConnectActivity$6.onComplete(AndroidFacebookConnectActivity.java:200)
06-19 07:36:10.530: E/AndroidRuntime(2428): at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:254)
答案 0 :(得分:0)
使用此作为参考:
答案 1 :(得分:0)
与评论中提到的人一样,您必须使用Facebook Graph API,特别是您必须使用来自GraphUser
Request.GraphUserCallback() { ... }
使用以下代码获取Facebook个人资料信息。确保APP_ID
文件
AndroidManifest.xml
代码:
private void onSessionStateChange(Session session, SessionState state,
Exception exception) {
if (state.isOpened()) {
Log.i(TAG, "Logged in...");
/*
* When callback comes from facebook request user data from
* facebook and show the results.
*/
Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
//Enter Code to retrieve information
}
}
}).executeAsync(); // If .executeAsync() is not called then the
// above code does not execute
// Async() executes in a parallel thread.
} else if (state.isClosed()) {
Log.i(TAG, "Logged out...");
}
}
在public void onCompleted(GraphUser user, Response respoonse)
内,你可以像这样提出用户信息请求:
user.getId();
user.getName();
user.getBirthday();
您可以将此信息存储在变量中,或通过以下方式将其传递给其他活动:
Log.w("myConsultant",
user.getId() + " " + user.getName() + " "
+ user.getInnerJSONObject() + " "
+ user.getLocation());
i = new Intent(this, NewActivity.class);
i.putExtra("Fb_name", user.getName());
i.putExtra("Fb_location", user.getLocation()
.getCity());
i.putExtra("Fb_id", user.getId());
Log.i(TAG, " FB USer info fetched");
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
然后,您可以在onSessionStateChange
内拨打onCreate()
,以便在创建活动时检索用户的信息:
Session session = Session.getActiveSession();
if (session != null && (session.isOpened() || session.isClosed())) {
onSessionStateChange(session, session.getState(), null);
}