3

在 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?

4

1 回答 1

1

基本上,你可以不使用sdk与Facebook集成,只要用户已经在iOS的设置中登录,否则你会得到一个错误的结果

您应该使用的对象是 SLComposer。(您可以通过网络找到许多示例和教程)。

如果它满足你,那没关系,但我建议使用 Facebook sdk,使用原生 Facebook 应用程序,这样你就不会失去那些没有通过 iOS 设置使用 Facebook 帐户登录的人。您将能够尝试并使用本机应用程序集成。

不要犹豫,寻求进一步的帮助。

于 2013-12-30T18:43:18.200 回答