我正在嘗試使用Three20 Facebook示例應用程序以及Facebook Graph API(用於驗證並獲取訪問令牌)。我使用下面的代碼爲TTURLRequest:Three20和Facebook Graph API問題
- (void)load:(TTURLRequestCachePolicy)cachePolicy more:(BOOL)more {
if (!self.isLoading && TTIsStringWithAnyText(_query)) {
NSString* url = _query;
NSLog(@"load:%@:", url);
TTURLRequest* request = [TTURLRequest requestWithURL:url delegate:self];
request.cachePolicy = cachePolicy | TTURLRequestCachePolicyEtag;
request.cacheExpirationAge = TT_CACHE_EXPIRATION_AGE_NEVER;
TTURLJSONResponse* response = [[TTURLJSONResponse alloc] init];
request.response = response;
TT_RELEASE_SAFELY(response);
[request send];
}
}
這完全適用的網址沒有訪問令牌(即https://graph.facebook.com/markzuckerberg/feed),但每當我使用一個訪問令牌完全相同的網頁上(即https://graph.facebook.com/markzuckerberg/feed?access_token= ...)我得到與描述「錯誤的網址」錯誤。將任一網址複製到網絡瀏覽器中都表明兩者都可以正常工作,但URL請求只會爲具有access_token的網址生成錯誤。
我想到的唯一可能的解釋是TTURLRequest對URL的長度有限制。有沒有人有任何想法,爲什麼這可能會發生和/或有任何解決方法?
更新:這是我如何構造URL:
self.accessToken = [_facebook.accessToken stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
self.dataSource = [[[TTFacebookNewsFeedDataSource alloc] initWithQuery:[NSString stringWithFormat:@"http://graph.facebook.com/markzuckerberg/feed?access_token=%@", self.accessToken]] autorelease];
我使用下面的代碼之前令牌逸出到它添加到URL訪問:[_facebook.accessToken stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]。訪問令牌是唯一的參數。我NSLog請求之前的URL,如果我複製NSLogged URL到瀏覽器JSON加載罰款,所以我不認爲它是一個逃避問題。 – Josh 2011-03-11 03:19:55
請向我展示你組裝你的網址的代碼。 – 2011-03-11 06:35:46
self.accessToken = [_facebook.accessToken stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; self.dataSource = [[[TT FacebookNewsFeedDataSource alloc] initWithQuery:[NSString stringWithFormat:@「http://graph.facebook.com/markzuckerberg/feed?access_token=%@」,self.accessToken]] autorelease]; – Josh 2011-03-12 15:41:39