objective-c – 访问OS X Mountain Lion上的Facebook帐户

objective-c – 访问OS X Mountain Lion上的Facebook帐户,第1张

概述由于Mountain Lion现在正式将Facebook整合在一起,我想在OS X的Accounts.framework和Social.framework上玩一点. 我在Facebook Developer App中设置了一个应用程序,并使用以下代码请求访问登录用户的Facebook帐户: ACAccountStore *acStore = [[ACAccountStore alloc] init 由于Mountain lion现在正式将Facebook整合在一起,我想在OS X的Accounts.framework和Social.framework上玩一点.

我在Facebook Developer App中设置了一个应用程序,并使用以下代码请求访问登录用户的Facebook帐户:

ACAccountStore *acStore = [[ACAccountStore alloc] init];ACAccountType *accType = [acStore accountTypeWithAccountTypeIDentifIEr:ACAccountTypeIDentifIErFacebook];NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:FB_APP_ID,ACFacebookAppIDKey,@"read_stream,publish_stream",ACFacebookPermissionsKey,ACFacebookAudIEnceFrIEnds,ACFacebookAudIEnceKey,nil];[acStore requestAccesstoAccountsWithType:accType options:options completion:^(BOol granted,NSError *error) {    if (granted) {        NSLog(@"Accounts: %@",acStore.accounts);        NSLog(@"Access granted");    } else {        NSLog(@"Access denIEd");    }}];

现在我总是得到错误Error Domain = xpcObjectsErrorDomain Code = 2“ *** 作无法完成.(xpcObjectsErrorDomain error 2.)”

当我从Xcode首次启动应用程序2-3次时,OS X显示确认对话框“XYZ想要访问您的Facebook帐户”,我点击确定,我收到一条错误,上面写着“应用程序尚未安装”.此错误现在“消失”,我收到上述错误.

我的问题是:我是否必须在我的Xcode项目(Info.pList)或Facebook Developer App中配置一些特殊功能才能使其与OS X一起使用?或者我在代码中遗漏了什么?关于此的样本和教程似乎非常罕见: – /

我已经观看了关于Twitter / Facebook集成的WWDC 2012视频,但它几乎使用了我使用的代码.

任何帮助表示赞赏:-)

干杯,
比约恩

更新
我解决了这个问题,我只是没有仔细阅读文档;-)我必须将权限作为NSArray而不是字符串传递.我已将选项字典修改为如下所示:

NSDictionary * options = [NSDictionary dictionaryWithObjectsAndKeys:
                             FB_APP_ID,
                             [NSArray arrayWithObjects:@“read_stream”,@“publish_stream”,@“email”,@“user_likes”,nil],
                             ACFacebookAudIEnceFrIEnds,nil];

现在OS X显示一条警告,询问我是否要允许应用程序代表我发布到Facebook,我单击确定并出现新错误,导致无法访问Facebook帐户:

Error Domain = com.apple.accounts Code = 7“Facebook服务器无法满足此访问请求:应用程序必须在安装时请求基本读取权限.”

我已经将权限修改为只是电子邮件或只是user_likes但是这一切都导致了同样的错误.如果我只请求访问read_stream,则会授予访问权限,但会导致OAuth错误190,并显示错误验证访问令牌:用户XXXXXX未授权应用程序XXXXXX.

更新2:
我现在解决了所有问题,请参阅下面的答案.

解决方法 好吧,我终于解决了它:-)

当您首次请求访问用户Facebook帐户时,您可能只会在Facebook的权限参考中请求“User and Friend permissions”下列出的用户的权限.

一旦用户授予访问权限并且在Facebook上也安装了该应用程序,您可以请求您的应用程序所需的任何其他权限.重要的是,您可能不会同时要求读取和写入权限,一个接一个!因此,在同一请求中请求权限read_stream和publish_stream将不起作用.

这基本上就是我使用的代码:

self.store = [[ACAccountStore alloc] init];ACAccountType *accType = [self.store accountTypeWithAccountTypeIDentifIEr:ACAccountTypeIDentifIErFacebook];NSMutableDictionary *options = [NSMutableDictionary dictionaryWithObjectsAndKeys:                                    FB_APP_ID,[NSArray arrayWithObjects:@"email",@"user_about_me",@"user_likes",nil];    [self.store requestAccesstoAccountsWithType:accType options:options completion:^(BOol granted,NSError *error) {    if (granted && error == nil) {        self.accounts = self.store.accounts;            [options setobject:[NSArray arrayWithObjects:@"read_stream,read_mailBox,read_requests",nil] forKey:ACFacebookPermissionsKey];        [self.store requestAccesstoAccountsWithType:accType options:options completion:^(BOol granted,NSError *error) {            if (granted && error == nil) {                completionHandler(granted,error);            } else {                NSLog(@"Access denIEd 2");                NSLog(@"%@",[error description]);            }        }];    } else {        NSLog(@"Error: %@",[error description]);        NSLog(@"Access denIEd");    }}];

希望这会对某人有所帮助:-)

总结

以上是内存溢出为你收集整理的objective-c – 访问OS X Mountain Lion上的Facebook帐户全部内容,希望文章能够帮你解决objective-c – 访问OS X Mountain Lion上的Facebook帐户所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1015339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存