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] を押してもダイアログ ボックスは閉じませんが、completedHandler はFBSessionStateOpen状態で正常に実行されます。

4

1 に答える 1

0

この質問に iOS 6 というタグを付けたのを見たので、iOS 6 と Facebook の統合を使用できる iOS 6 デバイス用にこのゲームを開発していると思います。

一度やった方法を説明しました(https://stackoverflow.com/a/14151853/1449151)が、とにかくここに入れました。iOS 6 の Facebook 統合を使用したい場合は、次の手順に従って、すべてが正しく行われたことを確認してください。(たとえば、あなたの許可はゼロです。以下の方法を参照してください)。それが役に立てば幸い:

OK ここでは、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 に統合されている間、好きなことを行うことができます。

もう 1 つ、Facebook でアプリの設定を確認し、iOS 用のアプリや iPhone/iPad 用の ID を有効にするなどの構成を確認してください。plist の FacebookAppID も。

それがうまくいくかどうか教えてください。

編集: 私の Facebook SDK は 3.1.1 btw です。

于 2013-01-28T16:12:49.417 に答える