3

iOS用のFacebook3.0SDKにアップグレードしています。アプリケーションを再起動した後、既存のセッションを開こうとするまで、問題はうまくいきました。Facebookユーザーの友達リストにアクセスしようとしています。

if ([[FBSession activeSession] isOpen]) {
    [request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
        //do something here
    }];
}else{
    [[self session] openWithCompletionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
        if ([self isValid]) {
            [request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                //log this error we always get
                NSLog(@"%@",error);
                //do something else
            }];
        }
    }];
}

ただし、次のエラーが発生します。

Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0x1d92ff40 {com.facebook.sdk:ParsedJSONResponseKey={
  body =     {
    error =         {
        code = 2500;
        message = "An active access token must be used to query information about the current user.";
        type = OAuthException;
    };
  };
  code = 400;
}, com.facebook.sdk:HTTPStatusCode=400}

FBSession reauthorizeメソッドを使用すると、エラーなしでリクエストを完了できることがわかりましたが、受け入れられないアプリケーションを再起動するたびにUIを表示するか、アプリを切り替える必要があることも意味します。私が違ったやり方で何をすべきかについての提案はありますか?

4

1 に答える 1

3

ログイン後、リクエストに応じてセッションを設定していませんでした。単純な間違いです。

[[self session] openWithCompletionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
    if ([self isValid]) {
        //I should have been doing this
        request.session = [FBSession activeSession];
        [request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
            //log this error we always get
            NSLog(@"%@",error);
            //do something else
        }];
    }
}];
于 2012-11-20T22:57:28.300 に答える