我正在使用iOS内置框架进行连接。在询问"publish_stream"
权限后,FB返回错误:
Error Domain=com.apple.accounts Code=7 "The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time." UserInfo=0x145ad6a0 {NSLocalizedDescription=The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time.}
这里发生了什么?显示两个用户权限弹出窗口的用户体验不太理想。
答案 0 :(得分:17)
第一次,您必须要求读取权限。您最初无法使用任何类型的发布/写入权限授权用户。之后您应该做的是,在您的应用中有意义的地方,请求publish_stream权限。绝对不要做初始权限,然后立即请求publish_stream权限。
请参阅https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-3.0-to-3.1/中的这一说明,“单独请求读取和写入权限”部分。即使这适用于iOS的Facebook SDK,它也是内置框架中相同要求的扩展。
答案 1 :(得分:5)
我想补充一点,Facebook文档中还有一个警告:
// if a user has *never* logged into your app, you MUST include one of
// "email", "user_location", or "user_birthday". Other read
// permissions can also be included here.
如果不这样做会导致同样的错误。
答案 2 :(得分:4)
在最新的SDK(v3.5)中,您还需要在权限数组中传递@“basic_info”。它曾经是隐含的,但不再是隐含的。如果不这样做,您将获得“应用程序必须在安装时请求基本读取权限”消息
[FBSession openActiveSessionWithReadPermissions:@[@"email", @"basic_info"]
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
从方法docs:
readPermissions - 表示读取的字符串数组 在身份验证流程中请求的权限。 basic_info 必须在首次登录时明确请求权限,否则为否 更长的推断,(受主动迁移影响。)不允许 将发布权限传递给此方法。