Facebook设置iOS 6 - 应用程序名称未显示在“允许应用程序”列表中

时间:2012-09-28 18:19:26

标签: iphone facebook settings ios6 facebook-login

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

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

我做了几次搜索,但似乎无法找到将名称/图标添加到列表中的方法。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

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

-(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);
    }];
}

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