【发布时间】:2013-11-02 15:54:28
【问题描述】:
在 iOS 上使用 Facebook 时,我不是新手,但我的第一次尝试是使用 iOS 5 和 iPhone 3GS。使用 Facebook 的 Facebook SDK (https://developers.facebook.com/docs/ios/) 是唯一的方法。
快进到 iOS 7(实际上是 iOS 6),Apple 提供了 SocialKit、Account SDK 等,网上有很多教程可以做这样的事情:
if ([self userHasAccessToFacebook]) {
ACAccountStore* accountStore = [[ACAccountStore alloc]init];
ACAccountType* facebookAccountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSDictionary* options = @{ACFacebookAppIdKey: FACEBOOK_APP_KEY,
ACFacebookPermissionsKey: @[@"publish_stream"],
ACFacebookAudienceKey: ACFacebookAudienceEveryone};
[accountStore
requestAccessToAccountsWithType:facebookAccountType
options:options
completion:^(BOOL granted, NSError *error) {
if (granted) {
如果我已经在其他地方授权了我的 Facebook 应用程序(在这种情况下,我已经通过 Android 设备上的登录对话框),这可行,但在撤销访问权限后(当然是为了测试),我得到了
message = "验证访问令牌时出错:会话不匹配 当前存储的会话。这可能是因为用户更改了 自会话创建或 Facebook 拥有的密码 出于安全原因更改了会话。";
当我尝试分享到 Facebook 时。这甚至是在requestAccessToAccountsWithType 表示已授予访问权限之后。
我假设此时我需要登录并重新授权我的应用程序,但到目前为止我所看到的教程都没有提供任何关于如何执行此操作的指示。
归根结底,问题有两个:我是否需要使用 Facebook 的 Facebook SDK 来执行我需要执行的所有操作,如果不需要,如何获得仅使用 SocialKit 重新授权的应用?
【问题讨论】:
-
如果您只想发布到用户时间线,并且不需要支持iOS6以下,那么您不需要SDK。关于失败的访问,现在由“设置”应用程序控制,因此如果您遇到错误,您需要告诉您的用户他们需要允许从那里访问(我认为!)
标签: ios objective-c facebook