我正在使用sdk 3.7
我的Android应用程序不使用FB身份验证,但我有一个共享按钮。
在这个按钮上点击,我试图创建一个会话并打开一个FB WebDialog,当我这样做时,我得到的对话框要求我发布权限,之后会话没有打开,我得到{ {1}}
我试过了:
1.添加'basic_info'权限。
2.卸载我的应用程序和fb应用程序并重新安装。
如何解决这个问题?
(见下面的代码)
com.facebook.FacebookAuthorizationException: UnknownError: ApiException:The app must ask for a basic_info permission at install time.
答案 0 :(得分:2)
我不确定,我没有用FB API构建项目,但还没有,但我会尽力帮助你。据我所知,您需要separate the request of read and publish permissions.
根据FB API Docs:
应用应该将读取和发布权限请求分开。计划您的应用在初次登录时请求最低读取权限,然后在某人实际需要时然后发布任何发布权限。
因此,您的代码可能是:
/*
* login to facebook
*/
private void logInToFacebook() {
//...
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(this)
.setPermissions(Arrays.asList("basic_info"))
.setCallback(this));
} else {
Session.openActiveSession(this, true, this);
}
}
/*
* set the publish_actions permission here
*/
private void publishFeedDialog() {
Session session = Session.getActiveSession();
// check the session
if (session != null){
// create a new permission
Session.NewPermissionsRequest newPermissionsRequest = new Session
.NewPermissionsRequest(this, Arrays.asList("publish_actions"));
// set a new publish permission request
session.requestNewPublishPermissions(newPermissionsRequest);
Bundle params = new Bundle();
//...
}
}
也许这个答案可能对您有所帮助:SSO (Singe Sign-On) not working when Facebook app is installed on device:他在call
方法上执行此操作,他说:
由于在会话中发生更改时调用call(),session.isOpen()将为true,如果我们不检查是否设置了权限,我们将进入无限循环。
您在文档上有this information requestNewPublishPermissions
:
除了已经授予应用程序的权限之外,此方法还用于请求权限。在与Facebook建立初始连接后发生 。
我在这一步看到了这个解决方案:Add Publishing Logic因此你可以阅读:
该方法首先检查登录用户是否已授予您的应用发布权限;如果他们没有,他们将被提示重新授权应用程序并授予缺少的权限。
我希望这会对你有所帮助。