Facebook身份验证不会自动关闭

Facebook身份验证不会自动关闭,facebook,ios6,Facebook,Ios6,我正在尝试将FacebookConnect SDK集成到iOS平台上的cocos2d-x游戏中 我正在使用api [FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:TRUE completionHandler:^(FBSession *session, FBSessionState sta

我正在尝试将FacebookConnect SDK集成到iOS平台上的cocos2d-x游戏中

我正在使用api

[FBSession openActiveSessionWithReadPermissions:nil
                                   allowLoginUI:TRUE
                              completionHandler:^(FBSession *session, FBSessionState state, NSError *error)
{

if(state == FBSessionStateOpen)
 NSLog(@"Success");

}


对话框不会在按OK时关闭,但是completionHandler会在
FBSessionStateOpen
状态下成功执行。

我看到您将此问题标记为iOS 6,因此我假设您正在为iOS 6设备开发此游戏,您将能够使用iOS 6与Facebook集成

我曾经解释过我是怎么做的,但我还是把它放在这里了。如果你想使用iOS 6与Facebook的集成,你可以按照以下步骤来确保所有步骤都是正确的。(例如,我看到您的许可为零,请参见下面我是如何做到的)。希望有帮助:

好的,下面是我如何与iOS 6集成并从Facebook获得我想要的东西:

在AppDelegate中,我执行以下操作:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    return [FBSession.activeSession handleOpenURL:url];
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [FBSession.activeSession handleDidBecomeActive];
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    [FBSession.activeSession close];
}
在我的ViewController中,我希望检索关于我自己或我朋友的信息,我会这样做(注意:这是一个测试,所以有很多权限!)

然后在“presentPostOptions”中,我这样做(在本例中,我尝试从我的朋友那里检索一些内容):

-(无效)presentPostOptions
{
[[FBRequestFormyFriends]startWithCompletionHandler:^(FBRequestConnection*连接,NSDictionary*用户,NSError*错误)
{
如果(!错误){
NSArray*数据=[user objectForKey:@“data”];
NSLog(@“%d”,数据计数];
用于(FBGraphObject*数据中的朋友){
NSLog(@“%@,[朋友的名字]);
NSLog(@“%@,[朋友姓氏]);
NSLog(@“%@,[friend id]);
//确保您的视图中有FBProfilePictureView插座
//否则跳过个人资料图片!
self.fbProfilePic.profileID=@“您是朋友的profile.id”;
}
}
其他的
{
NSLog(@“错误”);
//[错误:错误];
}
}];
我不知道你还想做什么,因为在你的问题中,你只是试图建立一个连接,但这样你就可以在集成到iOS 6时做任何你想做的事情

还有一件事,确保你在Facebook上的应用程序设置和那里的配置,比如启用你的iOS应用程序和iPhone/iPad的ID。还有你的plist中的FacebookAppID

如果对你有好处就告诉我

编辑:我的Facebook SDK是3.1.1 btw

NSArray *permissions =
    [NSArray arrayWithObjects:@"email", @"user_location",
     @"user_birthday",
     @"user_likes", @"user_interests",@"friends_interests",@"friends_birthday",@"friends_location",@"friends_hometown",@"friends_photos",@"friends_status",
     @"friends_about_me", @"friends_birthday", @"friends_hometown", @"friends_interests", @"friends_likes", @"friends_location", nil];

    [FBSession openActiveSessionWithReadPermissions:permissions
                                       allowLoginUI:YES
                                  completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
                                      /* handle success + failure in block */
                                      if (status) {
                                          NSLog(@"Facebook Read Permission is successful!");
                                          [self presentPostOptions];

                                          //   [self presentPostOptions];


                                      }
                                  }];
- (void)presentPostOptions
{

    [[FBRequest requestForMyFriends] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error)

     {

         if (!error) {

NSArray *data = [user objectForKey:@"data"];
             NSLog(@"%d", [data count]);
             for (FBGraphObject<FBGraphUser> *friend in data) {
                 NSLog(@"%@", [friend first_name]);
                 NSLog(@"%@", [friend last_name]);
                 NSLog(@"%@", [friend id]);
                 //make sure you have FBProfilePictureView outlet in your view
                 //otherwise skip the profile picture!
                 self.fbProfilePic.profileID = @"you'r friend's profile.id";

             }
         }
         else
         {
             NSLog(@"error");
             //  [self didFailWithError:error];
         }
     }];