我们希望升级到3.x,这样我们iOS 6/iPhone 5上的用户就可以获得最简化的FB体验......鉴于此,我是否面临FB集成重写,或者我是否可以使用折旧的标题并继续使用3.1 SDK与3.1 SDK?
我们依赖的一些关键方法和请求是: [ad.facebook authorize:perms],shouldExtendAccessToken,extendAccessTokenIfNeeded,isSessionValid,dialog:@"feed"andParams:params andDelegate:delegate,"https://graph.facebook .com/me?fields = id,email,first_name&access_token =",et.al.3.1示例项目中的一些搜索使得所有这些项目都被替换了 - 我想这不仅仅是名称更改.
我没有找到从3.0升级到3.1升级的2.x到3.x版本 - 如果我忽略了这一点,请提供建议.
在最近尝试升级到3.0时,我在尝试使用折旧的API时遇到了重大的破坏(重复的SBJson标头,非解析的FB标头),一旦编译完成,handleOpenURL似乎坏了,它会重新切换到FB a第二次,然后崩溃.而且我遇到的帖子表明可能存在禁用3.x的ARC的问题(我们不能使用它,因为我们有C++).
我还没有开始2.x到3.1.也许这会更顺畅,但是我希望从那些在第二次长时间蝙蝠之前走到我面前的人那里获得一些见解 - 非常感谢.
我刚刚为我的应用程序进行了此升级.我这样做的原因是iOS 6的流畅性和未来对facebook的支持,因为他们最终会弃用旧的sdk.最大的变化是登录流程和打开图形调用.该对话框要求在您的墙上发布,仍然可以退回已弃用的标题.对于您感兴趣的方法,它们将被替换如下:
[ad.facebook授权:perms]
FBSession *session = [[FBSession alloc] initWithAppID:appId
permissions:permissionsArray
urlSchemeSuffix:urlSuffix
tokenCacheStrategy:nil];
[FBSession setActiveSession:session];
if(allowLoginUI == YES)
{
[session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent completionHandler:handler];
}
else if(session.state == FBSessionStateCreatedTokenLoaded)
{
[session openWithCompletionHandler:^(FBSession *_session, FBSessionState status, NSError *error) {
[self _sessionStateChanged:_session state:status error:error];
}];
}
[session release];
Run Code Online (Sandbox Code Playgroud)
有关登录的其他实施说明,请参阅
https://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/
https://developers.facebook.com/docs/howtos/login -with-Facebook的使用-IOS-SDK /
shouldExtendAccessToken,extendAccessTokenIfNeeded, - 这些现在已经消失了,facebook SDK实现了缓存并在需要时扩展了令牌.如果您在我的第一个代码中看到snippit,如果loginUI不应该显示,但会话状态是在FBSessionStateCreatedTokenLoaded中,您仍然想要打开会话.当您的会话处于FBSessionStateCreatedTokenLoaded状态时,它意味着:
两个初始会话状态之一,指示已加载缓存的令牌; 当会话处于此状态时,对open*的调用将导致打开会话,而无需UX或app切换
检查SessionLoginSample以获取更多信息.
isSessionValid - 现在是这样
FBSession.activeSession.isOpen
Run Code Online (Sandbox Code Playgroud)
dialog:@"feed"andParams:params andDelegate:delegate - 这仍然是相同的,但是你必须在使用它之前创建这样的facebook实例:
Facebook *facebook = [[Facebook alloc] initWithAppId:FBSession.activeSession.appID andDelegate:nil];
facebook.accessToken = FBSession.activeSession.accessToken;
facebook.expirationDate = FBSession.activeSession.expirationDate;
//... normal code to setup a feed post
[facebook dialog:@"feed" andParams:params andDelegate:self];
[facebook release];
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/
"https://graph.facebook.com/me?fields=id,email,first_name&access_token=", - 图表调用现在简单得多.您也可以很容易地将它们一起批量处理.
//[facebook requestWithGraphPath:@"me" andDelegate:self]; would become
[FBRequestConnection startForMeWithCompletionHandler:^
(FBRequestConnection *connection, id result, NSError *error) {}];
//[facebook requestWithGraphPath:@"me/albums" andParams:params andHttpMethod:@"POST" andDelegate:self]; would become
[FBRequestConnection startWithGraphPath:@"me/albums"
parameters:params
HTTPMethod:@"POST"
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {}];
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅https://developers.facebook.com/docs/howtos/batch-requests-ios-sdk/
| 归档时间: |
|
| 查看次数: |
2444 次 |
| 最近记录: |