13

新しい(ベータ版)facebook ios sdk 3.0を使用して、アプリにfacebook統合を追加しようとしています。私が望むのは、ステータスの更新を Facebook に投稿することだけです。FBLoginView を使用して Facebook にログインしました。Facebookの指示に従って、アプリIDをplistに入れました。Facebookに投稿するコードをいくつか入れました。

(void)viewDidLoad
{
[super viewDidLoad];
NSArray *perms;
perms = [NSArray arrayWithObjects:@"status_update", nil];
FBLoginView *loginview = 
[[FBLoginView alloc] initWithPermissions:perms];

loginview.frame = CGRectOffset(loginview.frame, 5, 5);
loginview.delegate = self;

[self.view addSubview:loginview];
// Do any additional setup after loading the view, typically from a nib.

}

- (IBAction)poststatus:(UIButton *)sender {
NSString *message = [NSString stringWithFormat:@"Test staus update"];

[FBRequestConnection startForPostStatusUpdate:message
                            completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

                                [self showAlert:message result:result error:error];

                            }];
}
- (void)showAlert:(NSString *)message
       result:(id)result
        error:(NSError *)error {

NSString *alertMsg;
NSString *alertTitle;
if (error) {
    alertMsg = error.localizedDescription;
    alertTitle = @"Error";
} else {
    NSDictionary *resultDict = (NSDictionary *)result;
    alertMsg = [NSString stringWithFormat:@"Successfully posted '%@'.\nPost ID: %@", 
                message, [resultDict valueForKey:@"id"]];
    alertTitle = @"Success";
}

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:alertTitle
                                                    message:alertMsg
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
[alertView show];
}

奇妙なことに、このコードは一度だけ機能します。初めてユーザーを認証した後、1 つのステータス更新を正常に投稿できます。その後、以降の試行はすべて FBiOSSDK エラー 5 で失敗します (コンソールでは、エラー: HTTP ステータス コード:400)。これを修正する唯一の方法は、Facebook アカウントからアプリを削除して再認証することです。何が問題なのかわからない。解決策をオンラインで探しましたが、何も見つかりませんでした。誰かがこれを修正する方法を知っている場合は、私に知らせてください。ありがとう

4

3 に答える 3

10

com.facebook.sdkエラー5は、FacebookiOSSDKを使用している間は常にイライラします。ほとんどの場合、コンソールに追加が付属していますエラー:HTTPステータスコード:400。Facebook iOS SDKには、このエラーをランダムに生成するバグがあるという認識です。このエラーは特定の理由で発生すると思いますが、SDKは発生時に実際のエラーの理由を提供しません。

いくつかの考えられる理由

  • sdkのすべてのリクエストは、completionHandlerの引数として実際に渡す完了ブロックを使用して実行されます。このエラーは、ブロックが進行中で、別のリクエストを行ったときに発生します。簡単な例は、Facebook(startForPostStatusUpdate ::)にボタンアクションで投稿するリクエストを書いた場合です。シングルボタンタップでは問題なく動作しますが、ボタンをダブルタップするとこのエラーがスローされますcom.facebook.sdkエラー5

  • 現在のセッションが開かれていないときに投稿しようとしている場合。たとえば、Facebookでサインインしたら、アプリを強制終了してから再度開き、Facebookで共有しようとします。結果-> com.facebook.sdkエラー5。この場合、を使用してセッションを再開してみてください。

  • Facebookは、同じステータスを繰り返し投稿することを許可していません。たとえば、ステータスを更新しようとしていて、文字列をハードコーディングしている場合は、@「これはテストステータスの更新です」と言ってください。そしてまた。5〜10回試行すると、それ以上実行できなくなります。結果として生じるcom.facebook.sdkエラー5.これがシナリオである場合は、ステータス文字列を変更して更新を試みる必要があります。

  • Facebookは、特定のユーザーがsdkを使用してステータスを投稿するための制限を定義しています。たとえば、ステータスを更新しようとしていて、15〜20回のステータス更新を行ったとします。結果->com.facebook.sdkエラー5.このシナリオでは、Facebookアカウントからアプリの認証を解除して再認証するか、他のFacebookアカウントを使用してみてください

于 2012-11-07T07:02:58.433 に答える
7

問題に対する答えはないようです。SDK に付属の FB サンプルを確認しましたが、これらの例でも同じエラーが発生します。つまり、数回のステータス更新 (15 ~ 20 回) の後、Facebook がその特定のユーザーの制限に達したことを意味します。そのユーザーでログアウトし、別のユーザーとしてログインすると、正常に投稿できます。

設定を制限する拡張機能が見つかった場合は、返信します。また、Facebook は同じ投稿を許可していません。

于 2012-09-27T06:41:17.940 に答える
0

プロキシを使用してください。

FB ios SDK は、graph.facebook.com/....?access_token=..... への HTTP リクエストへの単なるラップです。

したがって、リクエストを簡単に複製したり、HTTP プロキシを使用して実際のサーバーの回答を確認したりできます (これはエラー 5 ではありません!)。

于 2013-04-18T15:12:14.803 に答える