objective-c - 有什么方法可以从 Facebook iOS SDK 返回的访问 token 中提取 session key 吗?

标签 objective-c ios facebook facebook-chat x-facebook-platform

我需要在这个场景中使用 Facebook session key :http://developers.facebook.com/docs/chat/#platauth

但是,当前的Facebook iOS SDK返回给我们一个访问 token ,这对于本例来说是不够的。我进行了很多挖掘,在这里发现了这个问题:

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

但是它描述的格式与我们获得的访问 token 并不相似。

我对这些事情有点困惑。

顺便说一下,我查了一下旧版iPhone的目标old Facebook SDK进行测试,因为这个旧的 SDK 直接提供 session key ,但是这个 SDK 现在在成功登录后总是显示来自 Facebook 的错误页面。看来这个 SDK 已完全弃用?

为了清楚地说明这个问题,这是我从 Facebook iOS SDK 获得的访问 token (嵌入在 URL 中) :

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

最佳答案

我仍然没有将 FBAppAuth-ed 或 SafariAuth-ed access_token 片段转换为 session_id 的公式。但是,以下描述将有助于在所描述的公式中获取 access_token,然后可以轻松地将其分段以导出 session_id。希望这可以帮助。

在 iOS SDK 版本 2 中,登录由 Facebook 类中的以下 API 处理:

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


在同一 API 的实现中,如果我们关闭 FBAppAuth 和 SafariAuth,那么它将调用登录对话框,返回的 access_token 格式为 APP_ID | session key |摘要

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


返回的access_token可以在Facebook类中的以下回调方法中捕获(请放置一个NSLog来打印 token ):

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


关于objective-c - 有什么方法可以从 Facebook iOS SDK 返回的访问 token 中提取 session key 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5151122/

相关文章:

ios - 带有图像的 UIBarButtonItem 不显示

javascript - 如何从 Facebook Messenger 对话下载所有照片? JavaScript Vanilla

ios - iOS 中的 Facebook 登录 SDK 语言问题

c++ - 修改已编译的静态库

objective-c - 解析 json 提要到 iphone

ios - UITableView 重复前两个值

ios - SpriteKit : How to blur the movement of a node like a shooting star

不支持语言的 iOS 本地化

ios - 如何从另一个 AMSlideMenuMainViewController 中删除 UITableView 的 AllObjects NSMutableArray?

java - 如何使用selenium点击由6位数字生成名称的按钮?