1

アプリに Facebook サインインを実装しようとしていますが、機能しています (アクセス トークンを取得しています) が、グラフ リクエストを作成しようとすると、アクティブなアクセス トークンが必要であるという次のメッセージが表示されます。グラフ API にリクエストを送信するには:

Error Domain=facebookErrDomain Code=10000 "The operation couldn’t be completed. (facebookErrDomain error 10000.)" UserInfo=0x6a99fa0 {
    error=<CFBasicHash 0x6a99050 [0x1582b48]>{
        type = mutable dict, count = 3,
            entries =>
                2 : <CFString 0x6a99340 [0x1582b48]>{contents = "type"} = <CFString 0x6a994d0 [0x1582b48]>{contents = "OAuthException"}
                3 : <CFString 0x6a99470 [0x1582b48]>{contents = "message"} = <CFString 0x6a993d0 [0x1582b48]>{contents = "An active access token must be used to query information about the current user."}
                6 : <CFString 0x6a52270 [0x1582b48]>{contents = "code"} = 2500
        }
    }

リクエストを作成するためのコードは次のようになります (おそらく、ここにアクセス トークンを追加する必要がありますか?):

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

initメソッドで、必要に応じてトークンを更新するメソッドを呼び出すため、アクセストークンが問題ないことがわかりました。

[facebook extendAccessTokenIfNeeded];

また、次のデリゲート メソッドも実装していextendAccessTokenIfNeededます。

-(void)fbDidExtendToken:(NSString *)accessToken expiresAt:(NSDate *)expiresAt {
    NSLog(@"token extended"); //This NSLog hasn't been called, so I know the extending access token method wasn't fired...
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:accessToken forKey:@"FBAccessTokenKey"];
    [defaults setObject:expiresAt forKey:@"FBExpirationDateKey"];
    [defaults synchronize];
} 

ここで何が欠けていますか?グラフ API 要求にアクセス トークンを追加する必要がありますか? もしそうなら、どのように?

ちなみに、パブリック パスにグラフ リクエストを送信すると、完全に機能することもわかっています。

4

1 に答える 1

0

同じ問題が発生したばかりです。理由はわかりませんが、ネイティブのFacebookSDKはトークンをGETリクエストに置き換えていないようです。困ったのかも?私は次の解決策を使用しました:

 NSMutableDictionary *params = [NSMutableDictionary  dictionaryWithObjectsAndKeys:
                                   _facebook.accessToken, @"access_token",
                                   nil];

    [_facebook requestWithGraphPath:@"me/music"
                          andParams:params
                      andHttpMethod:@"GET"
                        andDelegate:self];

UPDの答えは正しいです[_facebook requestWithGraphPath:@"me" andParams:params andHttpMethod:@"GET" andDelegate:self]が、そうではありません[facebook requestWithGraphPath:@"me" andDelegate:self];

于 2012-08-03T14:18:01.683 に答える