1

我正在尝试将 Facebook-Connect 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状态成功执行。

4

1 回答 1

0

我看到你标记了这个问题 iOS 6 所以我假设你正在为 iOS 6 设备开发这个游戏,你将能够使用 iOS 6 与 Facebook 的集成。

我解释了我是如何做到的(https://stackoverflow.com/a/14151853/1449151),但我还是把它放在这里。如果你喜欢使用 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 中,我这样做(注意:这是一个测试,所以它有很多权限!):

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];


                                      }
                                  }];

然后在“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];
         }
     }];

我不知道您还想做什么,因为在您的问题中您只是尝试建立连接,但是这样您就可以在集成到 iOS 6 时做任何您想做的事情。

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

让我知道它是否适合你,

编辑:我的 Facebook SDK 是 3.1.1 顺便说一句。

于 2013-01-28T16:12:49.417 回答