2

こんにちは、「Facebook でサインイン」を行っています。私のコードは以下のとおりです。ここでは、if(granted ) ループに入っていません。ポップアップで「OK」をクリックすると、コンソールは以下のように印刷されます 2012-11-28 15:47:08.558 Tattoo Later[2748:1d34b] type:com.apple.facebook identifier: B962F897-6BAE-4769-8C04-B1B3D2C872A2 accountDescription: Facebook username: example@yahoo.co.in objectID: x-coredata://EBF41CAD-7388-45E0-8621-3958C7A67491/Account/p1 enabledDataclasses: {( "com.apple.Dataclass.Contacts", "com.apple.Dataclass.Calendars" )} enableAndSyncableDataclasses: {( )} properties: { fullname = "Example"; uid = 100001462475956; } parentAccount: (null) owningBundleID:(null)

「Facebookでサインイン」をクリックしたときのマイコード:

-(IBAction)loginWithFacebookClicked:(id)sender
{
 ACAccountStore *accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSArray * permissions = [NSArray arrayWithObjects:@"email",@"user_location", nil];
        NSDictionary * dict=[NSDictionary dictionaryWithObjectsAndKeys:@"238864112907671",ACFacebookAppIdKey,permissions,ACFacebookPermissionsKey,ACFacebookAudienceEveryone,ACFacebookAudienceKey, nil];
[accountStore requestAccessToAccountsWithType:accountType options:dict completion:^(BOOL granted, NSError *error) {
            if(granted ) {
                NSArray *accountsArray = [accountStore accountsWithAccountType:accountType];
if ([accountsArray count] > 0) {
ACAccount *fbAccount = [accountsArray objectAtIndex:0];
                    NSLog(@"%@",fbAccount);
}
            }
            else
            {
                NSLog(@"%@",[error localizedDescription]);
            }
        }];
}

最初は次のようなエラーが発生しました

Facebook サーバーは、このアクセス リクエストを実行できませんでした: プロキシされたアプリは、以前にインストールされていないと、公開権限をリクエストできません。

エラー Domain=com.apple.accounts Code=7 "Facebook サーバーはこのアクセス要求を実行できませんでした: 無効なアプリ ID" UserInfo=0xa29f520 {NSLocalizedDescription=Facebook サーバーはこのアクセス要求を実行できませんでした: 無効なアプリ ID}

後で検索して解決しましたが、これに対する解決策は得られませんでした

私を案内してください よろしくお願いします

4

1 に答える 1

2

答えはとても簡単です!完了ブロックは後で任意のスレッドで呼び出されます。したがって、ステップバイステップで実際にメソッドを終了し、メインスレッドで作業を続行し、後で応答を取得すると、if または else セクションに入ります。あなたのログは実際に if セクションに入力したことを証明しています (アカウントをログに記録します)。if セクションにブレークポイントを配置すると、この動作に気付くでしょう。だからあなたのコードは大丈夫です。

于 2012-11-28T10:55:56.427 に答える