3

iOS 6では、ユーザーは[設定]>[Facebook]からFacebookにログインできます。そのビューには、ユーザーがFacebookアカウントの使用を許可/禁止することを選択できるアプリが一覧表示されているセクションがあります。

FacebookSDK.frameworkをアプリに統合しましたが、このリストにアプリの行が表示されます。ただ、私のアプリの名前はリストされておらず、アプリのアイコンもリストされていません。

何度か検索しましたが、名前/アイコンをリストに追加する方法が見つからないようです。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

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デリゲートにaccountStore変数とaccount変数を設定してから、使用する@selectorメソッドを作成する必要があります。完了ハンドラーがUIで何かを行う場合は、メインスレッドで実行する必要があることに注意してください。そうしないと、完了ハンドラーのUIコードが実行されるのをしばらく待つことになります。

于 2012-09-29T18:19:04.023 に答える