【问题标题】:Facebook Settings iOS 6 - App Name not showing in Allow Apps listFacebook 设置 iOS 6 - 应用名称未显示在允许应用列表中
【发布时间】:2012-09-20 15:38:34
【问题描述】:

在 iOS 6 中,用户可以通过设置>Facebook 登录 Facebook。该视图中有一个部分列出了用户可以选择允许/禁止使用 Facebook 帐户的应用程序。

我已将 FacebookSDK.framework 集成到我的应用程序中,并且此列表中的应用程序会出现一行。只是,我的应用程序的名称没有列出,它的应用程序图标也没有列出。

我已经进行了多次搜索,但似乎找不到将名称/图标添加到列表中的方法。谁能指出我正确的方向?

【问题讨论】:

    标签: iphone facebook settings ios6 facebook-login


    【解决方案1】:

    您需要使用帐户存储方法来请求访问权限:

    -(void)authenticateFacebook {
    if([UIActivityViewController class] ) {
        NSArray *faceBookPermissions = @[@"publish_stream"];
        ////ACFacebookAppVersionKey: @"1.0",
    
        NSDictionary *faceBookOptions = @{
    ACFacebookAppIdKey: @"xxxxxxxx",
    ACFacebookPermissionsKey:faceBookPermissions,
    ACFacebookAudienceKey:ACFacebookAudienceFriends
        };
    
        AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        if(del.accountStore == nil) {
            del.accountStore = [[ACAccountStore alloc] init];
        }
        if(del.facebookAccount == nil) {
            ACAccountType *facebookAccountType = [del.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
            [del.accountStore requestAccessToAccountsWithType:facebookAccountType
                                                       options:faceBookOptions
                                                    completion:^(BOOL granted, NSError *error)
             {
                 if (granted) {
                     NSArray *accounts = [del.accountStore accountsWithAccountType:facebookAccountType];
                     del.facebookAccount = [accounts lastObject];
                     NSLog(@"got an account");
                     [self performSelectorOnMainThread:@selector(gotAnAccount) withObject:self waitUntilDone:NO];
                 } else {
                     NSLog(@"No account");
                     //fail gracefully
                     [self performSelectorOnMainThread:@selector(noAccount) withObject:self waitUntilDone:NO];
                 }
             }];
        }
    }
    

    完成后,您可以使用您的应用 ID 发布到 facebook,如下所示:

        -(void)postToFacebook:(NSDictionary *)parameters  {
    
        AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    
        NSURL *feedURL = [NSURL URLWithString:@"https://graph.facebook.com/me/feed"];
    
        SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook
                                                requestMethod:SLRequestMethodPOST
                                                          URL:feedURL
                                                   parameters:parameters];
        request.account = del.facebookAccount;
        [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
            NSString *alertText;
            if (error) {
                alertText = [NSString stringWithFormat:
                             @"error: domain = %@, code = %d",
                             error.domain, error.code];
                [self performSelectorOnMainThread:@selector(errorWithRequest:) withObject:alertText waitUntilDone:NO];
            } else {
                alertText = @"Posted action, id: %@";
                [self performSelectorOnMainThread:@selector(cancelButtonAction:) withObject:nil waitUntilDone:NO];
    
            }
            NSLog(@"%@",alertText);
        }];
    }
    

    您需要您的应用委托拥有 accountStore 和 account 变量,然后创建使用的 @selector 方法。请注意,如果完成处理程序对 UI 执行任何操作,则它们应该在主线程上运行,否则您将等待一段时间等待完成处理程序 UI 代码运行。

    【讨论】:

    • 这看起来是一个很好的答案,但您要回答的是这个问题吗?我很容易遗漏一些东西,只是想检查一下。
    • 好的,我想我了解如何使用 AccountStore 来访问帐户 - 当我们请求帐户时,它会被添加到列表中。但是,考虑到新的 3.1 SDK,我们是否需要在用户每次登录应用时都这样做?
    • 您将使用此代码而不是 3.1 SDK,因为您使用的是本机集成。如果您使用 3.1 SDK,则无需使用本机集成或在 FB 列表中查看您的应用程序。 Native 非常适合来自应用程序的静默帖子或创建自定义 FB 表。我发现本机代码也更快。
    • 只是补充一点,应用名称只有在用户实际尝试访问该帐户后才会显示在允许应用列表中。
    • @earnshavian 如果我使用带有参数的 SLRequest 在 Facebook 墙上发帖,我可以看到通过 共享,但是当我使用 SLComposeViewController 时,我看到通过 iOS 在 Facebook 墙上共享。为什么我没有看到我的应用名称而不是 iOS?
    猜你喜欢
    • 2016-05-31
    • 2020-12-10
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    相关资源
    最近更新 更多