Проблема с Three20 и Facebook Graph API - PullRequest
0 голосов
/ 11 марта 2011

Я пытаюсь использовать пример приложения Three20 Facebook вместе с API Graph Facebook (для аутентификации и получения токена доступа). Я использую следующий код для TTURLRequest:

- (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];
  }
}

Это прекрасно работает для URL без маркеров доступа (например, https://graph.facebook.com/markzuckerberg/feed), но всякий раз, когда я использую токен доступа на той же самой странице (например, https://graph.facebook.com/markzuckerberg/feed?access_token=...), я получаю ошибку с описанием «неверный URL»). «Копирование любого URL-адреса в веб-браузер показывает, что оба они работают нормально, но запрос 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];

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Я исправил эту проблему с помощью FBRequest serializeURL:

AppDelegate *appDel = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSString* url = [FBRequest serializeURL:@"https://graph.facebook.com/me/home" params:[NSMutableDictionary dictionaryWithObject:appDel.facebook.accessToken forKey:@"access_token"]];
0 голосов
/ 11 марта 2011

Проверьте синтаксис вашего URL.Я предполагаю, что вы неправильно экранировали свои параметры get, например токен доступа и / или другие параметры.

...