Android的Facebook的SDKlogin后不会调用callback

帮帮我,

我正在尝试使我的应用程序中处理Facebooklogin的类。 我的问题是它不适用于所有的活动。 在这个活动,它不会调用callback。 在login和授权应用程序webview被解雇后,callback不会触发。 在Logcat中打印的最后一个状态是OPENING

这是我的代码:

public void doLogin() { if ((Session.getActiveSession() == null || !Session.getActiveSession().isOpened())) { List<String> permissions = new ArrayList<String>(); permissions.add("email"); // start Facebook Login openActiveSession(activity, true, new Session.StatusCallback() { // callback when session changes state @Override public void call(Session session, SessionState state, Exception exception) { Log.d("Sessionstate", state.toString()); if (session.isOpened()) { // make request to the /me API Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (prgCheckFB.isShowing()) prgCheckFB.dismiss(); if (user != null) { Log.e("facebookid", id); doSomething(user); } } }); } }, permissions); } } private static Session openActiveSession(Activity activity, boolean allowLoginUI, Session.StatusCallback callback, List<String> permissions) { Session.OpenRequest openRequest = new Session.OpenRequest(activity) .setPermissions(permissions).setCallback(callback); Session session = new Session.Builder(activity).build(); if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI) { Session.setActiveSession(session); session.openForRead(openRequest); return session; } return null; } 

doSomething是将用户数据保存在共享首选项中的函数。

有什么不对的吗? 该function适用​​于某些活动,但不适用于所有活动。

谢谢

  • Facebook SDK 4.7.0loggingAppEventsLogger的ClassNotFoundException
  • java.exe在使用Facebook SDK时以非零退出值2结束
  • 在Android应用程序中获取刷新的Facebook令牌的代码是什么?
  • 你能解释为什么在Android上suport v4和v7
  • toByteArray()将不会被parsing为Facebooklogin
  • 如何在Android中从捆绑提取值
  • 带有服务器端组件的Android应用程序应该直接访问Facebook吗?
  • Facebookloginbutton:应用自定义样式
  • 也许你忘了处理login后的结果…

    检查覆盖方法onActivityResult ..

    因为它将结果处理回MainActivity,

    也许这可以帮助你的问题..

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

    更新1

    对于较新的SDK使用:

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

    如果在AndroidManifest.xml文件中为您的callback活动设置了属性android:noHistory="true" ,那么callback方法也不会触发。