6

我正在尝试使用openActiveSessionWithPublishPermissions在 Facebook 上发布 ,因此如果用户未登录,他需要先登录,然后使用 io6 Facebook 原生对话框发布消息。

我发现我能够登录,但没有调用完成处理程序。

我注意到的另一件事是,当我再次单击登录按钮时,它会调用完成处理程序并出现以下错误FBSessionStateClosedLoginFailed

我确实参考了这篇文章,但仍然没有找到解决我的问题的方法。

NSArray *permissions = [NSArray arrayWithObjects:@"publish_stream", nil];
[FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceEveryone allowLoginUI:YES completionHandler:
^(FBSession *session, FBSessionState status, NSError *error) 
{

  switch (status) {

                  case FBSessionStateOpen:
                        {
                          [FBNativeDialogs presentShareDialogModallyFrom:currentController initialText:nil image:nil url:nil handler:^(FBNativeDialogResult result, NSError *error) {}];
                        }
                        break;   
                   default:
                        break;
                    }
                }];
4

2 回答 2

5

确保您实现了该handleOpenUrl方法。

-(BOOL)application:(UIApplication *)application 
           openURL:(NSURL *)url 
 sourceApplication:(NSString *)sourceApplication
        annotation:(id)annotation {

     return [[FBSession activeSession] handleOpenURL:url]; 

}
于 2012-12-28T06:57:20.280 回答
0

你应该添加这个:

[FBNativeDialogs presentShareDialogModallyFrom:currentController initialText:nil
  image:nil url:nil handler:^(FBNativeDialogResult result, NSError *error) {
  if (result==FBNativeDialogResultCancelled) {
    UIAlertView     *alert=[[UIAlertView alloc]initWithTitle:@"Error"
       message:@"Sending Cancelled" delegate:self cancelButtonTitle:@"OK" 
       otherButtonTitles: nil];
   [alert show];
 } else if (result==FBNativeDialogResultSucceeded) {
   UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Succeed" 
     message:@"succeed" delegate:self cancelButtonTitle:@"OK" 
     otherButtonTitles: nil];
  [alert show];
}***}***];
于 2012-10-11T05:11:11.657 回答