iOS SDK OAuthException HTTP错误代码500

时间:2013-06-18 14:31:32

标签: objective-c xcode facebook api facebook-ios-sdk

从本周开始,我的iOS App在访问FB时遇到了问题(通过iOS FB SDK)。发生以下错误:

2013-06-18 15:44:16.756 foo-coffee[2441:907] Error: HTTP status code: 500
2013-06-18 15:44:16.761 foo-coffee[2441:907] Errrror: Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0x21051e70 {com.facebook.sdk:ParsedJSONResponseKey={
body =     {
    error =         {
        code = 1;
        message = "An unknown error has occurred.";
        type = OAuthException;
    };
};
code = 500;
}, com.facebook.sdk:HTTPStatusCode=500}, (null)

以下函数发生错误:

- (void)getFbFields:(CLLocationDegrees)lat longitude:(CLLocationDegrees)lng {
NSString *fbquery =  [NSString stringWithFormat:@"search?type=place&center=%f,%f&distance=3000&fields=name,cover", lat, lng];
[FBRequestConnection
 startWithGraphPath:fbquery
 completionHandler:^(FBRequestConnection *connection,
                     id result,
                     NSError *error) {
     if (!error) {
         [self readFbResponse:result];
     } else {
         NSLog(@"Errrror: %@, %@", error, result); 
     }
 }];
}

错误的可能性可能是FB“2013年7月10日迁移”。在这里,我在我的开发者帐户中有消息:没有访问令牌的图搜索端点。

July 10, 2013 Migration的路线图中声明:

  

图表API搜索更改   除帖子,地点和页面外,所有搜索Graph API调用都需要用户访问令牌。应用访问令牌也可用于Post search Graph API调用。地方和页面搜索图形API调用仍然需要App访问令牌。将不再支持搜索应用程序。

所以我似乎需要“App access token”。如何最好地集成“应用程序访问令牌”?作为搜索网址中的参数还是以其他方式?

1 个答案:

答案 0 :(得分:0)

您需要获得一个访问令牌并通过URL传递它。

我们用于获取此类访问令牌的C#代码为:

JsonObject response = (JsonObject) client.Get("oauth/access_token", new
{
    client_id = __facebookAppID,
    client_secret = __facebookAppSecret,
    grant_type = "client_credentials"
});

string accessToken = response["access_token"] as string;

一旦我们获得了访问令牌,我们只需将其添加到URL中,例如:

path += "&access_token=" + accessToken;