액세스 요청하기 위해 계정 저장소 방법을 사용해야합니다 : 그 다음과 같이 앱 ID와 페이스 북에 게시 할 수 있습니다 완료되면
-(void)authenticateFacebook {
if([UIActivityViewController class]) {
NSArray *faceBookPermissions = @[@"publish_stream"];
////ACFacebookAppVersionKey: @"1.0",
NSDictionary *faceBookOptions = @{
ACFacebookAppIdKey: @"xxxxxxxx",
ACFacebookPermissionsKey:faceBookPermissions,
ACFacebookAudienceKey:ACFacebookAudienceFriends
};
AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if(del.accountStore == nil) {
del.accountStore = [[ACAccountStore alloc] init];
}
if(del.facebookAccount == nil) {
ACAccountType *facebookAccountType = [del.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[del.accountStore requestAccessToAccountsWithType:facebookAccountType
options:faceBookOptions
completion:^(BOOL granted, NSError *error)
{
if (granted) {
NSArray *accounts = [del.accountStore accountsWithAccountType:facebookAccountType];
del.facebookAccount = [accounts lastObject];
NSLog(@"got an account");
[self performSelectorOnMainThread:@selector(gotAnAccount) withObject:self waitUntilDone:NO];
} else {
NSLog(@"No account");
//fail gracefully
[self performSelectorOnMainThread:@selector(noAccount) withObject:self waitUntilDone:NO];
}
}];
}
}
을 :
-(void)postToFacebook:(NSDictionary *)parameters {
AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSURL *feedURL = [NSURL URLWithString:@"https://graph.facebook.com/me/feed"];
SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodPOST
URL:feedURL
parameters:parameters];
request.account = del.facebookAccount;
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSString *alertText;
if (error) {
alertText = [NSString stringWithFormat:
@"error: domain = %@, code = %d",
error.domain, error.code];
[self performSelectorOnMainThread:@selector(errorWithRequest:) withObject:alertText waitUntilDone:NO];
} else {
alertText = @"Posted action, id: %@";
[self performSelectorOnMainThread:@selector(cancelButtonAction:) withObject:nil waitUntilDone:NO];
}
NSLog(@"%@",alertText);
}];
}
을 당신 ' 앱 대리인이 accountStore 및 account 변수를 가지고 있어야하며 사용 된 @selector 메소드를 생성해야합니다. 완성 핸들러는 UI로 무엇이든하면 주 스레드에서 실행해야하며, 완료 핸들러 UI 코드가 실행될 때까지 기다릴 수도 있습니다.
위대한 답변 인 것처럼 보입니다.하지만 대답하는 것이이 질문입니까? 나는 쉽게 뭔가를 놓칠 수 있었고, 단지 확인하고 싶었다. – SAHM
좋아요, 계정에 액세스하기 위해 AccountStore를 사용하는 것에 대해 알고 있다고 생각합니다. 계정을 요청하면 계정이 목록에 추가됩니다. 그러나 새로운 3.1 SDK를 고려할 때 사용자가 앱에 로그인 할 때마다이 작업을 수행해야합니까? – SAHM
기본 통합을 사용 중이므로 3.1 SDK 대신이 코드를 사용합니다. 3.1 SDK를 사용하면 기본 통합을 사용하거나 FB 목록에서 앱을 볼 필요가 없습니다. Native는 앱의 자동 게시물이나 맞춤 FB 시트 만들기에 적합합니다. 네이티브 코드가 더 빠름을 발견했습니다. – earnshavian