使用 3.0 SDK 的 Facebook 应用程序
Posted
技术标签:
【中文标题】使用 3.0 SDK 的 Facebook 应用程序【英文标题】:Facebook apprequests with 3.0 SDK 【发布时间】:2013-01-14 01:59:23 【问题描述】:我正在使用 Facebook ios SDK 3.1.1 并且已经成功集成了很多 Facebook 功能。秉承3.1.1,我使用登录方式
[FBSession openActiveSessionWithPermissions:permission
allowLoginUI:bAllowLoginUI
completionHandler:^(FBSession *session, FBSessionState state, NSError *error)
[self sessionStateChanged:session state:state error:error];
];
然后我需要发送“apprequests”,并且在 SDK 3.1 中没有新的方法可以实现,所以我必须使用 Facebook 对象和 FBDialog 回退到已弃用的 API。
但是,调用已弃用的对话框函数:
[m_pFacebook dialog:@"apprequests"
andParams:params
andDelegate:delegate];
导致弹出 FBDialog 并提示用户通过对话框再次登录。我需要直接进入 apprequests 对话框,而不需要用户再次输入他们的凭据,而且我确信有办法做到这一点,因为我已经看到它在 Diamond Dash 和其他游戏中实现。
我尝试使用 FBSession.activeSession.accessToken 设置 m_pFacebook.accessToken,并且我还确保 m_pFacebook.session 填充了 FBSession 的登录会话
以前有人遇到过这个问题吗?
【问题讨论】:
【参考方案1】:经过调试,发现Facebook *m_pFacebook对象的expirationDate还没有更新,所以_lastAccessTokenUpdate还在[NSDate distinctPast]中。解决方法是调用
[m_pFacebook fbDialogLogin:session.accessToken expirationDate:session.expirationDate];
当 sessionState 更改为 FBSessionStateOpen 时
- (void) sessionStateChanged:(FBSession*)session state:(FBSessionState)state error:(NSError*)error
switch ( state )
case FBSessionStateOpen:
[m_pFacebook fbDialogLogin:session.accessToken expirationDate:session.expirationDate];
break;
【讨论】:
以上是关于使用 3.0 SDK 的 Facebook 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
使用 Facebook-Android SDK 3.0 正确请求发布权限
无法使用 Facebook SDK 3.0 上传 iOS 应用程序,因为引用了非公共选择器