在 iOS 6 中,用户可以通过设置>Facebook 登录 Facebook。该视图中有一个部分列出了用户可以选择允许/禁止使用 Facebook 帐户的应用程序。
我已将 FacebookSDK.framework 集成到我的应用程序中,并且此列表中的应用程序会出现一行。只是,我的应用程序的名称没有列出,它的应用程序图标也没有列出。
我已经进行了几次搜索,但似乎找不到将名称/图标添加到列表中的方法。谁能指出我正确的方向?
在 iOS 6 中,用户可以通过设置>Facebook 登录 Facebook。该视图中有一个部分列出了用户可以选择允许/禁止使用 Facebook 帐户的应用程序。
我已将 FacebookSDK.framework 集成到我的应用程序中,并且此列表中的应用程序会出现一行。只是,我的应用程序的名称没有列出,它的应用程序图标也没有列出。
我已经进行了几次搜索,但似乎找不到将名称/图标添加到列表中的方法。谁能指出我正确的方向?
您需要使用帐户存储方法来请求访问权限:
-(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];
}
}];
}
}
完成后,您可以使用您的应用程序 ID 发布到 Facebook,如下所示:
-(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 代码运行。