3

これのいくつかの形式は以前に尋ねられ/答えられました、しかし私はまだ問題についてかなりぼんやりしています。友達のフィードに投稿しようとしていますが、iOS用の新しいFB SDKからstartWithGraphPath:を使用しようとすると、「エラーcom.facebook.sdk code=5」エラーが発生し続けます。FBSessionはアクティブで開いており、access_tokenは正しいように見えます...コードは次のとおりです。

    -(void)inviteUser:(NSString *)whoever {
        if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound) {
            // No permissions found in session, so ask for it
            [FBSession.activeSession reauthorizeWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *session, NSError *error) {
                if (!error){        
                    [self sendInvite:whoever];
                }
            }    
        }];
     }

-(void) sendInvite:(NSString *)whoever {
    NSMutableDictionary *params =
        [NSMutableDictionary dictionaryWithObjectsAndKeys:
        @"A name of something", @"name",
        nil];

    [FBRequestConnection
         startWithGraphPath:[NSString stringWithFormat:@"%@/feed", whoever]
         parameters:params
         HTTPMethod:@"POST"
         completionHandler:^(FBRequestConnection *connection,
                             id result,
                             NSError *error) {
             NSString *alertText;
             if (error) {
                 alertText = [NSString stringWithFormat:
                              @"error: domain = %@, code = %d",
                              error.domain, error.code];
             } else {
                 alertText = @"Posted successfully.";
             }
             // Show the result in an alert
             [[[UIAlertView alloc] initWithTitle:@"Result"
                                         message:alertText
                                        delegate:self
                               cancelButtonTitle:@"OK!"
                               otherButtonTitles:nil]
              show];
         }];

私はまだこれに慣れていないので、おそらく基本的なものが欠けています。しかし、私はそれを見ていません。

4

1 に答える 1

0

修正しました。私は2つの問題があったと思います:

  1. アプリ内でセッションが適切に通信されていない(つまり、loginControllerでFBSessionを開いていたが、sendInviteコントローラーでは開いていなかった<-正確な名前ではないことは明らかです)。その結果、access_tokenは実際にはアクティブではありませんでした。FBドキュメントに従い、FBSessionメソッドをappdelegateに配置する必要がありました。
  2. 「publish_stream」を使用すべきだったと思うときに、「publish_action」権限を使用していました。

これらの2つの変更でスムーズに動作します。ただし、フォローアップの質問があります。新しいSDKのネイティブ共有ダイアログを使用して他の人の壁に投稿する方法は?私はおそらくこれを別の質問として尋ねます。

于 2012-12-08T09:19:49.943 に答える