iOS 6 - Facebook共享程序失败,出现错误"代理应用程序尚未安装"

Sta*_*tas 23 iphone facebook objective-c ios6

虽然,有这样一个问题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);
    }
}];
Run Code Online (Sandbox Code Playgroud)

这个错误意味着什么?

Sta*_*tas 16

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

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

在此输入图像描述

因此,您必须始终传递权限数组.

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

typedef enum ACErrorCode {
   ACErrorUnknown = 1,
   ACErrorAccountMissingRequiredProperty,
   ACErrorAccountAuthenticationFailed,
   ACErrorAccountTypeInvalid,
   ACErrorAccountAlreadyExists,
   ACErrorAccountNotFound,
   ACErrorPermissionDenied,
   ACErrorAccessInfoInvalid
} ACErrorCode;
Run Code Online (Sandbox Code Playgroud)

(我来了ACErrorPermissionDenied)


Tho*_*ler 11

我们遇到了同样的问题,并仔细看了一下iOS facebook文档广告

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

我注意到以下段落:

请注意,要使用iOS 6本机身份验证,应用程序需要更改用户请求权限的方式 - 应用程序必须将其读取和写入权限请求分开.

我必须多次读过那篇文章,但它包含了解决方案:

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


Dan*_*iel 8

错误消息不明确,因为"app"可能是您的iOS应用程序?Facebook.app在电话上?Facebook应用?"代理应用程序"是Facebook应用程序,"尚未安装"意味着,它尚未与Facebook用户在线权限相关联.

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

在您获得访问权限后,即 - 用户在其在线隐私设置中连接到应用程序后,ACFacebookPermissionsKey作为Apple文档,成为可选项.

当你开始尝试使用本机Facebook集成时,这有点令人困惑......

使用原生Facebook的整合,你必须提供以下密钥,其基本信息项之一:email,user_birthdayuser_location.

引用Facebook(来源):

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