У меня все еще нет формулы для преобразования фрагментов 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