Есть ли способ извлечь ключ сессии из токена доступа, возвращенного Facebook iOS SDK? - PullRequest
2 голосов
/ 01 марта 2011

Мне нужен сеансовый ключ Facebook для использования в этом сенарио: http://developers.facebook.com/docs/chat/#platauth

Однако текущий Facebook iOS SDK вернул нам токен доступа, которого недостаточно для этого случая. Я много копался, нашел этот вопрос здесь:

http://www.quora.com/Do-the-OAuth2-access-tokens-in-the-new-Facebook-Graph-API-expire

Но описанный формат не похож на полученный у нас токен доступа.

Я немного запутался в этих вещах.

Кстати, я проверил старую версию iPhone, нацеленную на старый Facebook SDK , чтобы проверить, так как этот старый SDK предоставляет ключ сеанса напрямую, но этот SDK теперь всегда отображает страницу ошибки из Facebook после успешного завершения авторизоваться. Кажется, этот SDK полностью устарел?

Чтобы прояснить этот вопрос, это токен доступа (встроенный в URL), полученный от SDK Facebook iOS :

fb193174047373858://authorize/#access_token=IwDbeiWINrotP3JOd1EGoEY7OmOBd2DyV8lh73mutCM.eyJpdiI6IkdKd3BvWlItcWlWRzIwTGYtUkRUVWcifQ.J6qNtSibMmm0yFe2QNHG46jnIUXef3dV-NnbYqXkfrFABjPrgMPQRUeKHJ3GxX1T3nlU7-4P8FUT6dlfwSwHfNJrheTUZIXdd3AlsSRUiUer5xEdFA9IsGEMn6GyHheH9DSr76IeZcBjl-_s4ub3kg&expires_in=0

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

У меня все еще нет формулы для преобразования фрагментов FBAppAuth-ed или SafariAuth-ed access_token в session_id.Однако последующее описание поможет получить access_token в описанной формуле, которая затем может быть легко фрагментирована для получения session_id.Надеюсь это поможет.

В iOS SDK версии 2 вход в систему обрабатывается следующим API в классе Facebook:

- (void)authorize:(NSArray *)permissions delegate:(id<FBSessionDelegate>)delegate;


При реализации того же API, если мы отключаем FBAppAuthи SafariAuth, тогда он вызовет диалоговое окно входа в систему, и возвращенный access_token будет иметь формат APP_ID |SESSION_KEY |DIGEST

- (void)authorize:(NSArray *)permissions delegate:(id<FBSessionDelegate>)delegate 
{
  [_permissions release];
  _permissions = [permissions retain];
  _sessionDelegate = delegate;
    //[self authorizeWithFBAppAuth:YES safariAuth:YES];
  [self authorizeWithFBAppAuth:NO safariAuth:NO]; // Turned off FBApp and Safari auth
}


Возвращенный токен доступа можно получить с помощью следующего метода обратного вызова в классе Facebook (пожалуйста, добавьте NSLog для печати токена):

- (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate 


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

Текущий токен доступа FB имеет следующий формат («|» - разделитель): ||Например, для access_token, подобного этому: 146012674543599 | de29194522ad43g16ec2ca9b-612345672 | kK5HvfSTbJx-x21rMsTyttifij0 Ключ сеанса: de29194522ad43g16ec2ca9b-612345672 * 100 * * * * * *

...