簡単な投稿手順を実行しようとしています。
- (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]ボタンをクリックしても(許可しないことも機能しません)、何も起こらないことです。-このiOS6で変更されたこの動作 Facebookの投稿手順は「remote_app_idが保存されたIDと一致しません」になるため、「何も起こらない」ではなく、「Facebookサーバーはこのアクセス要求を実行できませんでした:remote_app_idは保存されたIDと一致しません」
したがって、アラートビューのクリックハンドラーは何も実行していないようです。私のcompletionHandlerが呼び出されることはありません。私はすでに同様の問題を抱えています:iOS 6ソーシャル統合-設定の問題に移動します そして、それはここでも同じ問題だと思います。あなたたちはそれについてどう思いますか?PS私は最新のxcode4.5(4G182)を搭載したMAC mini、OS X 10.8.1で実行しており、iPhone6.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!";
});
}];
}