在 facebook ios6 中没有进入 if(granted) 循环“使用 Facebook 登录”

Posted

技术标签:

【中文标题】在 facebook ios6 中没有进入 if(granted) 循环“使用 Facebook 登录”【英文标题】:In facebook ios6 not entering in to the if(granted ) loop "Sign in with Facebook" 【发布时间】:2012-11-28 10:23:03 【问题描述】:

您好,我正在使用“使用 facebook 登录”, 我的代码如下 这里没有进入 if(granted) 循环。 在我单击弹出窗口中的“确定”后,控制台打印如下 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 服务器无法满足此访问请求:代理应用无法在未安装之前请求发布权限。

Error Domain=com.apple.accounts Code=7 "Facebook 服务器无法完成此访问请求:无效的应用程序 ID" UserInfo=0xa29f520 NSLocalizedDescription=Facebook 服务器无法完成此访问请求:无效的应用程序 ID

后来我通过搜索解决了,但我没有得到解决方案

请指导我 提前致谢

【问题讨论】:

【参考方案1】:

答案很简单!稍后在任意线程上调用完成块。因此,如果您一步一步进行,它实际上会退出您的方法并继续在主线程上工作,然后当您收到响应时,它会进入 if 或 else 部分。您的日志实际上证明您已输入 if 部分(它记录帐户)。如果你在 if 部分放置一个断点,你会注意到这种行为。所以你的代码没问题。

【讨论】:

好的..谢谢你的澄清@Stas 不客气,我花了好几个小时来整合 Social fmw )) ok.. 如何解析数据,我的意思是我想从@Stas 获取电子邮件和姓名 我可以给你一些建议,虽然我不能为你做这项工作:) 发布类似“如何解析来自 FB 的 NSData *responseData 响应”之类的问题,我(或其他任何人)将尝试回答

以上是关于在 facebook ios6 中没有进入 if(granted) 循环“使用 Facebook 登录”的主要内容,如果未能解决你的问题,请参考以下文章

Facebook警告输入凭据未在真实设备IOS6上出现

Facebook Javascript 在本机 ios6 UIWebView 中登录(在 SAFARI 上工作)

Facebook 登录对话框在 iOS6 模拟器上不起作用

如何在 iOS6 上将 Facebook 框架集成到应用程序中?

Facebook SDK - iOS6 登录弹出窗口无法关闭

iOS 6 Facebook登录不刷新访问令牌