我正在尝试执行一个简单的发布程序:
- (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 发布过程而改变,结果是“remote_app_id 与存储的 id 不匹配”所以不仅仅是“什么都没有发生”,我有一个错误“Facebook 服务器无法满足这个访问请求:remote_app_id 确实与存储的 ID 不匹配”
所以,似乎警报视图的点击处理程序什么都不做,我的完成处理程序永远不会被调用。我确实已经遇到了类似的问题:iOS 6 Social integration - go to settings issue 我认为这里也是同样的问题。你们怎么看?PS 我在 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!";
});
}];
}