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