0

ユーザーがログインするとすぐに、次のコードを使用してユーザー情報を取得します。

[_facebook requestWithGraphPath:@"me" andDelegate:self];

最初の数回は機能しましたが、最終的にエラーが返されました。パーミッションに「offline_access」があるので、セッションのことだと思いました。Facebookからログアウトし、クリーンビルドから再度コンパイルしましたが、それでも次のエラーが返されます。

エラードメイン=facebookErrDomainコード=10000UserInfo = 0x54a2930「操作を完了できませんでした。(facebookErrDomainエラー10000)」

投稿できるので、アクセストークンは有効だと思います。私はそれを仮定する権利がありますか?

また、ログインするたびに、アプリにユーザー情報へのアクセスを許可した場合、Facebookが許可を求めるようにリダイレクトしないことにも気づきました。

誰かが私に何が悪いのか教えてもらえますか?

4

5 に答える 5

2

承認コマンドの回答は異なるようです。現在、以前のように有効期限はありません。isSessionValidにTRUEを返すように強制してみましたが、機能します。

isSessionValidはaccessTokenとexpirationDateをチェックします。有効期限がないため、関数はFALSEを返します。

それがFacebookからの一時的な変更なのか、それとも決定的な変更なのかわからない。この場合、SDKを修正する必要があると思います。また、新しい呼び出しはexpirationDateを取得する必要があります。

于 2010-09-09T14:58:07.830 に答える
1

これが私が使用した一時的な修正です。このメソッドの行46は、FBLoginDialog.mにあります。

- (void) dialogDidSucceed:(NSURL*)url {
  NSString *q = [url absoluteString];
  NSString *token = [self getStringFromUrl:q needle:@"access_token="];
  NSDate *expirationDate = [NSDate distantFuture];

  if ((token == (NSString *) [NSNull null]) || (token.length ==0)) {
    [self dialogDidCancel:url];
    [self dismissWithSuccess:NO animated:YES];
  } else {
    if ([_loginDelegate respondsToSelector:@selector(fbDialogLogin:expirationDate:)]) {
      [_loginDelegate fbDialogLogin:token expirationDate:expirationDate];
    }
    [self dismissWithSuccess:YES animated:YES];
  }
}

この問題を抱えているすべての人がoffline_access権限を要求しますか?有効期限が送信されていないことがわかるのは、これが唯一の理由です。たぶん、offline_access権限を要求しないようにしてください。

于 2010-09-09T15:54:36.157 に答える
1

私も同じ問題を抱えています。プライバシー設定、許可、その他の方法などを確認しましたが、解決できませんでした。多くのサイトが「offline_access/read_stream / publish_streamへのアクセス許可を確認してください」と言っていましたが、これらも重要だと思いますが、修正できませんでした。

それから私は最終的に次の解決策を見つけました、それはうまくいきます。

「Facebook.m」ファイルで「safariAuth:YES」を「safariAuth:NO」に変更する必要があります。

- (void)authorize:(NSArray *)permissions
         delegate:(id<FBSessionDelegate>)delegate {
            [_permissions release];
            _permissions = [permissions retain];
            _sessionDelegate = delegate;

            //[self authorizeWithFBAppAuth:YES safariAuth:YES];
            //You can get auth_token in iOS App!
           [self authorizeWithFBAppAuth:YES safariAuth:NO];      
}

次に、次の方法を使用して、ログインしている場合に独自の情報を取得できます。

[facebook requestWithGraphPath:@"me" andDelegate:self];

ログインしていない場合は、まず以下の方法でログインしてください。

permissions =  [[NSArray arrayWithObjects:
             @"email", @"read_stream", @"user_birthday", 
             @"user_about_me", @"publish_stream", @"offline_access", nil] retain];
if (![facebook isSessionValid]) {
    [facebook authorize:permissions delegate:self];
}

次の投稿は私を救いました。どうもありがとうございました! FacebookiOSSDKを使用してFacebookの応答を取得する方法

幸運とハッピーコーディング!ありがとうございました。

于 2011-05-06T18:45:44.470 に答える
0

私はこの問題を抱えています。これは主に、私のFacebookアカウントがプライバシーを最大限に活用しているためです。

ログイン中に渡した権限である可能性があります。デフォルトでは、公開情報へのアクセスのみが許可されます。Facebookで公開される情報はますます少なくなっていることを忘れないでください。

権限を「read_stream」、nilなどに変更してみてください

次に、[_ facebook requestWithGraphPath:@ "me" andDelegate:self]の代わりに;

[_facebook requestWithGraphPath:@ "me / home" andDelegate:self]を使用してみてください。

これにより、ニュースフィードが返されます。5分前に私のために働いた。

于 2010-09-09T11:39:48.360 に答える
0

ここに追加することはあまりありませんが、ここでも機能しません。iOS SDKを使用してストリームに投稿しましたが、昨日まで機能していました。今日、私のクライアントは私に電話して不平を言いました。うーん。

オフラインアクセス許可ともちろん「publish_stream」許可をリクエストしました...

于 2010-09-09T13:45:53.963 に答える