我遇到了登录与Facebook的发布权限3.1的ios sdk。Facebook的iOS 3.1 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登录,除了这一功能,所以登录过程应该在同一按钮上。
谢谢!
+1我们陷入了同样的问题,特别是因为混合权限调用被取消。 –
reauthorizeWithPublishPermissions折旧。改为使用 requestNewPublishPermissions。 – John