23

虽然,有这样一个问题Facebook 错误 (7) iOS 6它已经关闭,没有任何答案!在获得对用户的 facebook 帐户的访问权限时,我遇到了一个错误: error is: Error Domain=com.apple.accounts Code=7 "The Facebook server could not fulfill this access request: The proxied app is not already installed." UserInfo=0xa260270 {NSLocalizedDescription=The Facebook server could not fulfill this access request: The proxied app is not already installed.}

我正在执行这样的请求:

self.statusLabel.text = @"Waiting for authorization...";
if (self.accountStore == nil) {
    self.accountStore = [[ACAccountStore alloc] init];
}   
ACAccountType * facebookAccountType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

NSDictionary * dict = @{ACFacebookAppIdKey : FB_APP_ID, ACFacebookAudienceKey : ACFacebookAudienceEveryone};
[self.accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) {
    __block NSString * statusText = nil;
    if (granted) {
        statusText = @"Logged in";
        NSArray * accounts = [self.accountStore accountsWithAccountType:facebookAccountType];
        self.facebookAccount = [accounts lastObject];
        NSLog(@"account is: %@", self.facebookAccount);
        self.statusLabel.text = statusText;
        [self postToFeed];
    }
    else {
        self.statusLabel.text = @"Login failed";
        NSLog(@"error is: %@", error);
    }
}];

这个错误是什么意思?

4

5 回答 5

16

我已经解决了这个问题!那是因为我没有传递权限数组!尽管ACAccountStore该类声明此参数是可选的,但它不是! 在此处输入图像描述

更多的应用程序可以启动并要求基本权限(因为它是暗示的)!

在此处输入图像描述

因此,您必须始终传递一个权限数组。

这里还描述了账户商店返回的错误代码:

typedef enum ACErrorCode {
   ACErrorUnknown = 1,
   ACErrorAccountMissingRequiredProperty,
   ACErrorAccountAuthenticationFailed,
   ACErrorAccountTypeInvalid,
   ACErrorAccountAlreadyExists,
   ACErrorAccountNotFound,
   ACErrorPermissionDenied,
   ACErrorAccessInfoInvalid
} ACErrorCode;

(我已经到ACErrorPermissionDenied了)

于 2012-10-02T07:55:11.527 回答
11

我们遇到了同样的问题,在仔细查看了 iOS facebook 文档广告之后

https://developers.facebook.com/docs/howtos/ios-6/

我注意到以下段落:

请注意,要使用 iOS 6 原生身份验证,应用程序需要更改它们向用户请求权限的方式 - 应用程序必须将它们对读取和写入权限的请求分开。

我一定已经读了好几遍了,但它包含了解决方案:

如果要授予写入权限(发布访问权限),则必须多次请求访问权限。所以现在我们首先要求“电子邮件”获得阅读许可,然后要求“publish_action”能够发布到时间线。

于 2013-01-21T13:24:28.480 回答
8

错误消息不清楚,因为“应用程序”可能是您的 iOS 应用程序?手机上的 Facebook.app?脸书应用?“代理应用程序”是 Facebook 应用程序,“尚未安装”意味着它尚未与在线 Facebook 用户在权限方面相关联。

当您的 Facebook 应用程序第一次连接到用户 Facebook 帐户时,您必须ACFacebookPermissionsKey在选项字典的键中指定基本信息值。其他 Facebook SDK 的过去和现在,例如 Javascript 或 PHP 库,默认提供基本信息作为密钥,因此您不必这样做。似乎 iOS 中的本机集成并没有这样做,因此,如果当用户第一次将您的应用程序连接到他们的 Facebook 帐户而没有提供任何权限时,您会收到此错误。

在您获得访问权限后,即用户在其在线隐私设置中连接到应用程序后,ACFacebookPermissionsKey就像 Apple 文档一样,成为可选的。

当您开始尝试使用本机 Facebook 集成时,这一切都有些令人困惑……

使用本机 Facebook 集成,您必须提供以下作为基本信息键的键之一:emailuser_birthdayuser_location.

引用 Facebook(来源):

要使用 iOS 6 原生身份验证对话框创建此基本连接,应用程序必须通过请求电子邮件、user_birthday 或 user_location 权限之一来请求访问用户的基本配置文件信息。

于 2012-10-12T03:51:37.017 回答
0

在我的一台设备上遇到此错误后(在看到正确的、预期的 iO​​S 警报视图要求我批准 Facebook 访问我的应用程序后):

“Facebook 服务器无法完成此访问请求:应用程序 ID 无效。”

我终于找到了问题所在。

尽管最初似乎是 FB 开发人员网站上的 Facebook 应用程序设置存在问题,但事实证明,我设备的 iOS Facebook 帐户不再具有与之关联的有效密码 - 当用户将 iOS 备份恢复到新设备时,这会很高兴. 一旦我在我的设备设置中对其进行了排序,一切都会按预期工作。

我在第一个 FB 权限访问请求中请求“publish_stream”时没有遇到任何问题——我实际上认为这里真正的问题是错误消息是如此随机,以至于它们无法帮助开发人员找到错误的来源。由于Apple和Facebook缺乏团结,重新体验!

于 2012-11-06T16:49:27.267 回答
0

除了上述建议之外,还有一些可以尝试的方法是在 facebook.com 上检查您的应用设置 -

https://developers.facebook.com/apps/<*APP_ID*>/summary
  • 确保沙盒模式设置为关闭

    还,

    “选择您的应用如何与 Facebook 集成”下

    选择-> 原生 iOS 应用

  • 设置你的 Bundle ID
  • 您可以为 iPhone/iPad App Store ID 设置任何临时整数值
  • 将 Facebook 登录设置为已启用
  • 列出的平台是原生 iPhone 应用程序和/或原生 iPad 应用程序

保存更改并在一段时间后尝试,因为 facebook 可能需要几分钟才能将更改同步到其所有服务器。

于 2013-09-26T11:53:35.083 回答