我在使用 facebook 3.1 ios sdk 中的发布权限登录时遇到问题。
我的应用程序有一个共享视频的按钮,当用户单击它时,我想添加基本 + 发布权限。据我了解,我必须打两个电话-
openActiveSessionWithReadPermissions
, 接着reauthorizeWithPublishPermissions
这是我现在使用的代码:
//Opens a Facebook session and optionally shows the login UX.
- (void)openSessionForReadPermissions
{
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:YES
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
//this is called even from the reauthorizeWithPublishPermissions
if (state == FBSessionStateOpen && !error)
{
[self openSessionForPublishPermissions];
}
else if (state == FBSessionStateClosedLoginFailed)
{
[FBSession.activeSession closeAndClearTokenInformation];
[[NSNotificationCenter defaultCenter] postNotificationName:FBLoginErrorNotification object:session];
}
}];
}
-(void)openSessionForPublishPermissions
{
NSArray* permissions = [NSArray arrayWithObject:@"publish_stream"];
[[FBSession activeSession] reauthorizeWithPublishPermissions:permissions
defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:
^(FBSession *session, NSError *error)
{
if (!error)
{
[[NSNotificationCenter defaultCenter]
postNotificationName:FBLoginSuccessNotification
object:session];
}
else
{
[[NSNotificationCenter defaultCenter]
postNotificationName:FBLoginErrorNotification
object:session];
}
}];
}
我看到 openSessionForReadPermissions 中的块被调用了两次(一次使用 FBSessionStateOpen,一次使用 openSessionForPublishPermissions 调用中的 FBSessionStateOpenTokenExtended),并且在第一次尝试登录应用程序时收到 ErrorReauthorizeFailedReasonUserCancelled(如果 O 之前删除了所有应用程序权限)。
实现此登录的正确方法是什么?该应用程序不需要 Facebook 登录,除了这一功能,因此登录过程应该在同一个按钮按下。
谢谢!