我试图检查用户是否已经授予发布权限。如果他之前没有授予权限,我将他导航到权限屏幕:requestNewPublishPermissions
-(void)checkPermissions
{
// Get the most recent status
[FBRequestConnection
startWithGraphPath:@"me/permissions"
completionHandler:^(FBRequestConnection *connection,
id result,
NSError *error) {
if (!error) {
//This Condition Never Executed
if([[result objectForKey:@"data"] objectForKey:@"publish_actions"])
{
//permissions exist
}
else
{
[self openSessionForPublishPermissions];
}
NSString *permission = [[result objectForKey:@"data"] objectForKey:@"publish_actions"];
NSLog(@"permissions data = %@",data);
}
else
{
NSLog(@"error"); //Control goes to this block
}
}];
}
上面的代码if(!error)块永远不会被执行,它总是返回error
我哪里错了?我错过什么了吗?
可以看到活动会话中的权限。下面是HelloFacebookSample:
if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound) {
// permission does not exist
} else {
// permission exists
}
您可以检查会话是否处于活动状态并请求发布权限,而不是手动检查权限:如果用户已经授予权限,则不会发布额外的确认对话框。参见下面的代码示例:
- (void)requestWritePermission:(UIViewController *)viewController channel:(NSString *)channel callback:(void(^)(BOOL success))callback
{
if ([FBSession.activeSession isOpen])
{
[FBSession.activeSession requestNewPublishPermissions:@[@"publish_actions"]
defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession *session, NSError *error) {
callback(error == nil);
}];
}
else
{
// Attempt to request publish permission without read permission.
}
}
代码不完整,但应该可以让您开始。