2010-10-05 11 views
7

Nie wiem, jeśli czegoś brakuje, ale tutaj jest. Im próbuje uzyskać access_token dla mojej aplikacji tak, że może iść i patrzeć na wydarzenia w niektórych publicznych grup na Facebooku, nie wymagając od użytkownika być zalogowany.Brak elementu oauth/access_token do Facebooka

im próbuje uzyskać access_token z https://graph.facebook.com/oauth/access_token?client_secret=foobar&client_id=foobar&grant_type=client_credentials&format=json&sdk=ios

Powoduje zwrócenie ciągu znaków: access_token = xxxx | ugtqdoWfvvo5_S-Fo2D7_I4rdbc

To miło i wszystko, ale to nie json. Wszelkie wglądy na temat, dlaczego zwracany ciąg nie jest kodowany json?

Uwaga: Im używając Facebook funkcji iOS SDK jak tak [_facebook requestWithGraphPath: @ "OAuth/access_token" andParams: params andHttpMethod: @ "POST" andDelegate: self];

Odpowiedz

-1

Wszelkie informacje na temat, dlaczego zwrócony łańcuch nie jest kodowany json?

Tak, token dostępu nie powinien być kodowany JSON. I jest prawdopodobnie niewielka wartość w kodowaniu JSON pojedynczego ciągu.

Dlaczego się tego spodziewasz?

Wygląda na to, że byłem źle poinformowany. Spec stwierdza, że ​​aplikacja/json ma być używana dla treści odpowiedzi.

+0

Więc mówisz, że musimy napisać nasze własne parsery, żeby obsłużyć odpowiedź? –

+0

Teraz jestem zdezorientowany - nie musisz analizować znacznika dostępu dla wszystkiego, co znam. Co próbujesz wydostać z parsowania tokenu dostępu? –

+1

-1 To jest złe. Powinien on być zakodowany w JSON i to oczekiwanie jest oparte na specyfikacji: http://tools.ietf.org/html/draft-ietf-oauth-v2-25#section-5.1 – jkoreska

-1

Jeśli używasz Facebook SDK, wierzę, że wrócą NSArray i NSDictionnary

może się mylę, ale spróbuj z objectForKey:@"access_token"

0

obserwacji.

Sposób, w jaki rozumiem zestaw SDK FB iOS, polega na tym, że funkcja delegata otrzyma obiekt, taki jak NSArray lub NSDictionnary do pracy. Patrząc na wewnętrzne klasy FB SDK wydaje się, że wszystkie odpowiedzi są analizowane przy użyciu parsera SBJSON. Jeśli odpowiedź nie jest json, to nie będzie.

[_facebook requestWithGraphPath: @ "261247595170" andDelegate: self]; zwraca nice json. Żadnych problemów.

[_facebook requestWithGraphPath: @ "oauth/access_token" iParams: params iHttpMethod: @ "POST" i Usuń: self]; Łańcuch wrócił. Analizator składni SBJSON kończy się niepowodzeniem.

Wydaje się to być niespójnością w usłudze wykresu FB.

Można napisać specjalną funkcję do rozwiązania tego problemu, ale jeśli FB zdecyduje się zmienić format ciągu, to wszystkie aplikacje IPhone przestaną działać i trzeba będzie zaktualizować. Nie fajnie.

1

Oto urywek wyodrębnić tokenu dostępu i zastąpić postać rury z właściwym ucieczki ...

NSURL *accessTokenURL = [NSURL URLWithString:@"https://graph.facebook.com/oauth/access_token?client_id=XXXXXXXXXXXXX&client_secret=XXXXXXXXXXXXXXXXXXX&grant_type=client_credentials"]; 
NSString *accessTokenResponse = [NSString stringWithContentsOfURL:accessTokenURL encoding:NSUTF8StringEncoding error:NULL]; 
if(accessTokenResponse != nil) { 
    NSMutableString *accessToken = [NSMutableString stringWithString:[accessTokenResponse substringFromIndex:13]]; 
    [accessToken replaceOccurrencesOfString:@"|" withString:@"%7C" options:NSLiteralSearch range:NSMakeRange(0, [accessToken length])]; 
} 
Powiązane problemy