iOS 6 – Facebook共享程序失败,错误“代理应用程序尚未安装”

虽然,有这样一个问题Facebook错误(7)iOS 6已经closures,没有任何答案! 虽然获取用户的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.} 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); } }]; 

这个错误是什么意思?

我已经解决了这个问题! 这是因为我不通过权限数组! 虽然ACAccountStore类声明这个参数是可选的,但它不是! 在这里输入图像说明

更多的应用程序可能会启动并要求基本的权限(因为它是隐含的)!

在这里输入图像说明

所以,你必须总是传递一个权限数组。

以下是帐户商店返回的错误代码的说明:

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

(我在这里有ACErrorPermissionDenied

我们有同样的问题,并仔细看看iOS的Facebook的文档广告

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

我注意到以下段落:

请注意,要使用iOS 6本地身份validation,应用程序需要更改用户向用户请求权限的方式 – 应用程序必须将读取和写入权限的请求分开。

我必须多读几遍,但它包含的解决scheme:

如果要授予写入(发布访问权),则必须执行多个访问请求。 所以现在我们首先要求获得权限“email”来获取读取权限,然后“publish_action”能够发布到时间线上。

错误信息不清楚,因为“应用程序”可能是你的iOS应用程序? Facebook.app的电话? Facebook应用程序? “代理应用程序”是Facebook应用程序,“尚未安装”意味着,它尚未与Facebook用户在权限方面联系在一起。

您的Facebook应用程序第一次连接到用户Facebook帐户时,必须在选项字典的ACFacebookPermissionsKey键中指定基本信息值。 其他的Facebook SDK的过去和现在,如JavaScript或PHP库默认提供基本信息作为关键,所以你永远不必。 看起来,iOS中的本地集成不会这样做,因此,如果用户首次将您的应用程序连接到他们的Facebook帐户而没有提供任何权限,则会出现此错误。

在您获得访问权限后,即 – 用户在联机的隐私设置中连接到应用程序后, ACFacebookPermissionsKey作为Apple文档进行操作,成为可选项。

当你开始尝试使用本地的Facebook集成时,这一切都有点混乱。

使用本地Facebook集成,您必须提供以下其中一个基本信息键: emailuser_birthdayuser_location

引用Facebook( 来源 ):

要使用iOS 6本地身份validation对话框创build此基本连接,应用程序必须通过请求电子邮件,user_birthday或user_location权限之一来请求访问用户的基本个人资料信息。

在我的一个设备上遇到这个错误之后(看到正确的,预期的iOS警报视图要求我批准Facebook访问我的应用程序):

Facebook服务器无法满足这个访问请求:无效的应用程序ID。

我终于find了问题。

尽pipe最初在FB开发者网站上的Facebook应用程序设置似乎有问题,但事实certificate,我的设备的iOS Facebook帐户不再具有与其关联的有效密码 – 当用户将iOS备份恢复到新设备时, 。 一旦我在我的设备设置中sorting,一切都按预期工作。

我在第一个FB权限访问请求中没有遇到任何请求“publish_stream”的问题 – 我其实认为真正的问题在于错误信息是如此随意,以至于他们不能帮助开发人员find错误的根源,再次感谢苹果和Facebook的不统一!

除了上述build议之外,还有其他一些可以尝试的方法是在facebook.com上检查您的应用程序设置 –

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

    也,

    “select您的应用如何与Facebook整合”

    select – >本机iOS应用程序

  • 设置您的捆绑ID
  • 您可以为iPhone / iPadapp storeID设置任何临时整数值
  • 将Facebooklogin设置为已启用
  • 列出的平台是本机iPhone应用程序和/或本机iPad应用程序

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