2

iOS アプリで次の問題に直面しています。

  1. ユーザーの友人のウォールに公開しているときに、iOS アプリを使用するとエラー " com.facebook.sdk error 5" が発生します。

  2. 「 」をチェックするたびに、アプリがログインを求めてきますFBSession.activeSession.isOpen

以前はすべて正常に機能していました。しかし、アプリ ID を変更したため (現在は別の Facebook アプリを使用する必要があります)。エラーが発生しています。

私はこれについていくつかの調査を行い、いくつかの解決策を見つけました。私はそれらをすべて試しましたが、何も機能しません。

Facebook にログインするための次のコードを作成しました。

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
comingfromFB = YES;
NSArray *permissions = [[NSArray alloc] initWithObjects:
                        @"friends_birthday",
                        nil];

return [FBSession openActiveSessionWithReadPermissions:permissions
                                               allowLoginUI:allowLoginUI
                                          completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
                                              [self sessionStateChanged:session state:state error:error];
                                          }];
}

そして、ストーリーを公開するための次のコード:

if ([FBSession.activeSession.permissions
         indexOfObject:@"publish_actions"] == NSNotFound) {
        // No permissions found in session, ask for it
        [FBSession.activeSession
         reauthorizeWithPublishPermissions:
         [NSArray arrayWithObject:@"publish_actions"]
         defaultAudience:FBSessionDefaultAudienceFriends
         completionHandler:^(FBSession *session, NSError *error) {
             if (!error) {
                 // If permissions granted, publish the story
                 [self publishStory];
             }
         }];
    } else {
        // If permissions present, publish the story
        [self publishStory];
}

アプリを実行すると、次のエラーが表示されます。

Error: HTTP status code: 403

2013-02-05 14:36:47.109 <appname>[1705:c07] Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0xaa9af20 {com.facebook.sdk:ParsedJSONResponseKey={
    body =     {
        error =         {
            code = 200;
            message = "(#200) The user hasn't authorized the application to perform this action";
            type = OAuthException;
        };
    };
    code = 403;
}, com.facebook.sdk:HTTPStatusCode=403}

どこが間違っているのかを理解するのを手伝ってください。

また、いくつかのキーと値のペアを に追加しましたNSUserDefaults。それがその理由として考えられるでしょうか?

ありがとう。

4

1 に答える 1

1

投稿ボタンでビューを初めて表示するときに、セッションが開いているかどうかを確認し、セッションの状態に応じて投稿ボタンのタイトルを設定したい場合があります。ボタンの最初のタイトルが「投稿」であると仮定します。

[FBSession openActiveSessionWithAllowLoginUI: NO];

if (![FBSession.activeSession isOpen]) 
{
    [self setSendButtonTitle:NSLocalizedString(@"Log in",@"")];
}

次に、投稿ボタン アクションに次のコードを追加します。

- (void) send: (UIButton*) sender
{
    if (![FBSession.activeSession isOpen]) 
    {
        [FBSession openActiveSessionWithPublishPermissions: [NSArray arrayWithObjects: @"publish_stream", nil]
                                       defaultAudience: FBSessionDefaultAudienceEveryone
                                          allowLoginUI: YES

                              completionHandler: ^(FBSession *session,
                                                  FBSessionState status,
                                                  NSError *error) 
                              {
                                  if (error)
                                  {
                                      NSLog(@"error");
                                  } 
                                  else 
                                  {
                                      [FBSession setActiveSession:session];
                                      [self setSendButtonTitle: NSLocalizedString(@"Post",@"")];
                                  }
                              }];

        return;
    }

    // here comes the code you use for sending the message
}

したがって、ユーザーが送信を押したときにアプリが承認されていない場合、アプリはログイン操作を実行し、投稿ボタンのタイトルを「ログイン」から「投稿」に変更します。その後、ユーザーはもう一度ボタンを押すことでメッセージを投稿できます。

それが役に立てば幸い

于 2013-02-05T10:46:54.307 に答える