无法使用Facebook SDK for Android在Facebook上发布

时间:2013-08-17 07:02:28

标签: android facebook-android-sdk

我正在使用com.facebook.widget.UserSettingsFragment来管理登录/注销:

Fragment userSettingsFragment = new UserSettingsFragment();
fragmentTransaction.replace(R.id.content_container, userSettingsFragment, "userSettingsFragment");

然后在另一个Fragment我想在Facebook上发布消息。我查看了doc并写了下面显示的MyFragment

com.facebook.widget.UserSettingsFragment的连接似乎有效(我可以登录/退出),但是当我想在MyFragment中发布时,似乎session.requestNewPublishPermissions(newPermissionsRequest);不会更改{{1}因为永远不会调用Session

它会调用一些onSessionStateChange UI来请求权限,然后没有任何反应。

我可以使用Facebook进行登录/注销,即是否管理所有Facebook SDK对象?我想知道,因为com.facebook.widget.UserSettingsFragment中的Session.getActiveSession();总是会返回MyFragment,即使我已退出。

有人可以帮忙吗?

Session

3 个答案:

答案 0 :(得分:1)

我没有像示例代码那样检查每个请求的权限,而是直接在com.facebook.widget.UserSettingsFragment中设置:

UserSettingsFragment userSettingsFragment = new UserSettingsFragment();                 
Session session = Session.getActiveSession();
if(session==null || session.isClosed()){
    userSettingsFragment.setPublishPermissions(Arrays.asList("publish_actions"));
}
fragmentTransaction.replace(R.id.content_container, userSettingsFragment, "userSettingsFragment");

答案 1 :(得分:0)

Facebook登录仅适用于您的应用程序的单个活动。在创建facebook appid时,您需要提及活动名称和包名称。所以最后Facebook身份验证和发布仅适用于指定的活动。

答案 2 :(得分:0)

您的代码似乎与Facebook上的Feed教程相同,但我无法找到差异。在您看到Facebook UI弹出权限后,UiLifecycleHelper可能不会调用call StatusCallback方法。

要验证,请在{<1}}添加:

session.addCallback(mCallback);

然后,调试并检查是否调用了// Check for publish permissions List<String> permissions = session.getPermissions(); if (!isSubsetOf(PERMISSIONS, permissions)) { pendingPublishReauthorization = true; Session.NewPermissionsRequest newPermissionsRequest = new Session .NewPermissionsRequest(this, PERMISSIONS); // -- here --- session.addCallback(mCallback); session.requestNewPublishPermissions(newPermissionsRequest); return; } 。如果它已被调用,请不要离开此行,但请检查logcat或调试onSessionStateChange内的问题,为什么它没有调用UiLifecycleHelper的{​​{1}}方法。如果没有调用,则可能是您拥有权限或登录问题。

除了这些检查之外,您还可以使用此android-simple-facebook库:https://github.com/sromku/android-simple-facebook

您可以轻松登录 / logut 发布Feed / 照片等,而无需您进行任何痛苦的编码。除了简单的示例之外,还有一个示例应用程序,例如片段

登录示例:

call()

发布Feed的示例:

StatusCallback

需要关注询问 READ和PUBLISH权限的正确顺序。您可以设置要在应用程序中使用的所有权限,并且库将一个接一个地触发连接上的Facebook权限对话框,或者如果您拒绝对话框中的PUBLISH权限,它将再次触发发布操作上的对话框