0

私のアプリでは、壁に画像を投稿したいのですが、何かが足りないと思います。私は多くの調査を行い、そのコードにたどり着きました。実際には機能することもありますが、一般的には、publish_action 権限を持つセッションがないため、コードが実行されているときに、コードの 2 番目の部分が機能していますが、問題は、2 番目の部分で常にエラー ログを取得するため、先に進めないことです...パブリッシュ権限でアクティブなセッションを開くことができない理由がわかりましたか?

   if ([[FBSession activeSession]isOpen]) {
        /*
         * if the current session has no publish permission we need to reauthorize
         */
        if ([[[FBSession activeSession]permissions]indexOfObject:@"publish_actions"] == NSNotFound) {

            [[FBSession activeSession] requestNewPublishPermissions:[NSArray arrayWithObject:@"publish_action"] defaultAudience:FBSessionDefaultAudienceOnlyMe
                                                  completionHandler:^(FBSession *session,NSError *error){
                                                      action();
                                                  }];

        }else{
            [self publishStory];
        }
    }else{
        /*
         * open a new session with publish permission
         */
        [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                                           defaultAudience:FBSessionDefaultAudienceOnlyMe
                                              allowLoginUI:YES
                                         completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
                                             if (!error && status == FBSessionStateOpen) {
                                                 [self publishStory];
                                             }else{
                                                 NSLog(@"error");
                                             }
                                         }];
    }
4

1 に答える 1

0

コードの最初の部分で、新しいパブリッシュ アクセス許可を要求しているときに [NSArray arrayWithObject:@"publish_action"]....

私が間違っていなければ、そうあるべきだと思います[NSArray arrayWithObject:@"publish_actions"]

ここにFacebookのドキュメントからのコードスニップがあります https://developers.facebook.com/docs/technical-guides/iossdk/errors/

// Method that requests permissions needed to make the API call.

    - (void)requestPermissionCallAPI {

        [FBSession.activeSession 
            requestNewPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                         defaultAudience:FBSessionDefaultAudienceEveryone
                       completionHandler:^(FBSession *session, NSError *error) {
                       if (error) {
                           // Handle new permissions request errors
                           [self handleRequestPermissionError:error];
                       } else {
                           // Make API call
                           ...
                       }
        }];
    }
于 2013-07-03T14:57:37.043 に答える