【问题标题】:User permission not asked while posting to FB iOS发布到 FB iOS 时未询问用户权限
【发布时间】:2014-12-28 05:00:49
【问题描述】:

我正在尝试使用 iOS 中的 Facebook SDK 将消息发布到 Facebook 墙上。成功登录后,在发布到 Facebook 之前不会询问用户许可。我已经使用 iOS sdk 中的请求新发布权限方法向所有权限发出请求。当我点击发布消息时,任何人都知道如何显示用户权限屏幕?

下面是我使用的代码:

//Login:

     [FBSession openActiveSessionWithReadPermissions:nil
                                              allowLoginUI:YES
                                         completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
                                             if(!error) {
                                                 if(state == FBSessionStateOpen)
                                                     [self postWithText: @"message"
                                                          ImageName: @""
                                                                URL: @""
                                                            Caption: @""
                                                               Name: @""
                                                     andDescription: @""];                                             
                                             } else {
                                                 [FBSession.activeSession closeAndClearTokenInformation];
                                                 //show error message                                          }
                                         }];
-(void) postWithText: (NSString*) message
           ImageName: (NSString*) image
                 URL: (NSString*) url
             Caption: (NSString*) caption
                Name: (NSString*) name
      andDescription: (NSString*) description
{

    NSMutableDictionary* params = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
                                   message, @"message",
                                   nil];

    if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound)
    {
        // No permissions found in session, ask for it
        [FBSession.activeSession requestNewPublishPermissions: [NSArray arrayWithObject:@"publish_actions"]
                                              defaultAudience: FBSessionDefaultAudienceFriends
                                            completionHandler: ^(FBSession *session, NSError *error)
        {
             if (!error)
             {

                     [self postToWall: params];
             }
         }];
    }
    else
    {
            [self postToWall: params];
    }
}

-(void) postToWall: (NSMutableDictionary*) params
{

    [FBRequestConnection startWithGraphPath:@"me/feed"
                                 parameters:params
                                 HTTPMethod:@"POST"
                          completionHandler:^(FBRequestConnection *connection,
                                              id result,
                                              NSError *error)
     {
         if (error)
         {
             //showing an alert for failure
             UIAlertView *alertView = [[UIAlertView alloc]
                                       initWithTitle:@"Post Failed"
                                       message:error.localizedDescription
                                       delegate:nil
                                       cancelButtonTitle:@"OK"
                                       otherButtonTitles:nil];
             [alertView show];
         }
     }];
}

【问题讨论】:

  • 请分享您的代码,这样会更容易找到问题...
  • 嗨大卫,我也添加了代码!
  • 能否请您也发布您的FB登录代码?除了没有被提示许可之外,它是否仍然张贴在您的墙上,或者您最终是否出现任何错误/异常?
  • 嗨,大卫,感谢您的回复。我添加了登录代码。我正在使用创建 appid 的管理员帐户进行测试。对于此帐户,未经许可即可成功发布。对于其他帐户,无需请求许可。但是帖子也失败了,因为它需要 Facebook 的批准。
  • 好的,我尝试了您的代码,它似乎可以工作...您可以尝试使用您的 Facebook id 登录,从应用程序设置(在 Facebook)中删除应用程序,从您的应用程序中注销,然后重新登录 - 一个干净的开始。我假设您只记录用户一次(因此在某处对 [[FBSession activeSession] isOpen] 进行了测试。在 requestNewPublishPermissions 上放置断点并检查它是否被调用(也许它只是以您未捕获的错误结束)。您可能也想查看answer。请告诉我。

标签: ios facebook


【解决方案1】:

好的,我尝试了您的代码,它似乎可以正常工作...您可以尝试使用您的 Facebook id 登录,从应用程序设置(在 Facebook)中删除该应用程序,从您的应用程序中注销并重新登录 - 一个干净的开始。我假设您只记录用户一次(因此在某处对[[FBSession activeSession] isOpen] 进行了测试。在requestNewPublishPermissions 上放置断点并检查它是否被调用(也许它只是以您没有捕获的错误结束)。您可能也想检查此答案。

【讨论】:

    猜你喜欢
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    相关资源
    最近更新 更多