gpt4 book ai didi

iphone - iOS 6 Facebook 发布程序以 "remote_app_id does not match stored id"错误结束

转载 作者:太空狗 更新时间:2023-10-30 03:10:13 26 4
gpt4 key购买 nike

我正在尝试执行一个简单的发布过程:

- (IBAction)directPostClick:(id)sender {
self.statusLabel.text = @"Waiting for authorization...";
if (self.accountStore == nil) {
self.accountStore = [[ACAccountStore alloc] init];
}
ACAccountType * facebookAccountType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSArray * permissions = @[@"publish_stream", @"user_checkins", @"publish_checkins", @"user_likes", @"user_videos"];
NSDictionary * dict = @{ACFacebookAppIdKey : @"My app id here", ACFacebookPermissionsKey : permissions, ACFacebookAudienceKey : ACFacebookAudienceOnlyMe};
[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);
}
}];
}

编辑: 问题是,当我点击 alertView 的 OK 按钮时(不允许也不起作用)没有任何反应! - 现在这个行为改变了 iOS 6 Facebook posting procedure ends up with "remote_app_id does not match stored id"所以我得到了一个错误,而不是“什么都没有发生”“Facebook 服务器无法满足此访问请求:remote_app_id 与存储的 ID 不匹配”

enter image description here

所以,似乎警报 View 的点击处理程序什么都不做,我的 completionHandler 从未被调用。我确实有类似的问题:iOS 6 Social integration - go to settings issue我认为这也是同样的问题。你们怎么看呢?附言我在 MAC mini、OS X 10.8.1 和最新的 xcode 4.5 (4G182) 上运行,并使用 iPhone 6.0 模拟器。

添加:根据 Bjorn 的要求,添加了 postToFeed 方法,尽管它从未被调用过:

- (void)postToFeed {
NSDictionary * parameters = @{@"message" : @"Hello world!"};
NSURL * feedUrl = [NSURL URLWithString:@"https://graph.facebook.com/me/feed"];
SLRequest * request = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodPOST URL:feedUrl parameters:parameters];
request.account = self.facebookAccount;
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
self.statusLabel.text = @"Posted!";
});
}];
}

最佳答案

我在使用帐户框架和 Facebook 集成时也遇到了一些困难。以下是我学到的知识以及我是如何让它发挥作用的。

<强>1。确保您已在 Facebook 上正确设置您的应用
您需要将您的 App 与 Facebook 集成的方式设置为Native iOS App,并在指定字段中输入您的 App 的 Bundle ID。 (编辑:请注意捆绑 ID 区分大小写)您现在可以将 iTunes ID 设置为 0。启用 Facebook 登录并将高级设置选项卡中的应用类型设置为 native /桌面
同时将 App Secret in Client 设置为No

如果这些选项中的一个或多个未正确设置,您很可能会收到错误 The Facebook server could not fulfill this access request: remote_app_id does not match stored id .

(编辑:您还必须确保禁用沙箱。)

<强>2。首次安装 Facebook App
首次通过 iOS(以及 Mac OS X)上的 native Facebook 集成安装应用程序时,您必须仅请求基本的读取权限!没有别的了 email , user_birthdayuser_location在这里是允许的。使用 user_about_me ,根据 Facebook 文档,这也是基本的读取权限,但不起作用。如果您以前使用过 Facebook JavaScript SDK 或 Facebook PHP SDK,这会非常令人困惑,因为默认情况下它会请求基本权限,而您无需执行任何操作。 Facebook 还通过关于 how to use the new Facebook SDK 的简短分步指南更新了他们的文档。在 iOS 6 上。

<强>3。请求额外权限
重要的是要知道,您不能同时请求读取和写入权限。这也是经验丰富的 Facebook SDK 开发人员可能会感到困惑的地方。请求 read_stream许可连同 publish_stream permission 会使请求失败,导致错误 An app may not asks for read and write permissions at the same time

因为 Facebook 并没有真正区分 Permission Reference 中的读/写权限。 ,您必须自己确定写权限。它们通常以 manage_* 为前缀, publish_* , create_*或以 *_management 为后缀.

Facebook也不建议在获得基本权限后立即申请额外权限。 documentation说“您现在需要单独请求读取和发布权限(并按此顺序)。很可能,您将在应用程序启动和用户首次登录时请求个性化的读取权限。稍后,如果合适,您的应用程序可以当它打算将数据发布到 Facebook 时请求发布权限。[...] 分别请求这两种类型也大大提高了用户授予发布权限的机会,因为您的应用程序只会在需要时寻求它们,最有可能在用户有更强烈的意图时。”。

<强>4。示例代码
以下示例代码应适用于 iOS 和 Mac OS X:

ACAccountType * facebookAccountType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

// At first, we only ask for the basic read permission
NSArray * permissions = @[@"email"];

NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"My app id here", ACFacebookAppIdKey, permissions, ACFacebookPermissionsKey, ACFacebookAudienceOnlyMe, ACFacebookAudienceKey, nil];

[self.accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) {
if (granted && error == nil) {
/**
* The user granted us the basic read permission.
* Now we can ask for more permissions
**/
NSArray *readPermissions = @[@"read_stream", @"read_friendlists"];
[dict setObject:readPermissions forKey: ACFacebookPermissionsKey];

[self.accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) {
if(granted && error == nil) {
/**
* We now should have some read permission
* Now we may ask for write permissions or
* do something else.
**/
} else {
NSLog(@"error is: %@",[error description]);
}
}];
} else {
NSLog(@"error is: %@",[error description]);
}
}];

关于iphone - iOS 6 Facebook 发布程序以 "remote_app_id does not match stored id"错误结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12644229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com