我尝试使用iOS Social.framework分享到Facebook。但是,大多数用户不会在设置> Facebook中设置Facebook,因此当您调出UIActivityViewController时Facebook不会显示,但它并未列出。 (请参阅UIActivity with no settings for Facebook或只是google" facebook未在UIActivityViewController中显示,"有很多人试图解决此问题。)
我们的应用程序已经使用Facebook SDK,因此我可以获取Facebook帐户信息,所以我想我会获取信息,然后将信息保存在设置> Facebook中。这是我的代码。 (我从When do we use saveAccount:(ACAccount *)account of ACAccountStore class?和iOS requestAccessToAccountsWithType is Not Showing Permission Prompt / NSAlert获得)
- (void)storeAccountWithAccessToken:(NSString *)token secret:(NSString *)secret {
if (self.accountStore == nil) {
self.accountStore = [[ACAccountStore alloc] init];
}
//We start creating an account by creating the credentials object
ACAccountCredential *credential = [[ACAccountCredential alloc] initWithOAuthToken:token tokenSecret:secret];
ACAccountType *acctType =[self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
ACAccount *newAccount = [[ACAccount alloc] initWithAccountType:acctType];
//Here we assign credentials and now can save account
newAccount.credential = credential;
NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys:
[VVEnvironment stringForKey:kVVEnvironmentKeyFacebookAppID], (NSString *)ACFacebookAppIdKey,
[NSArray arrayWithObject:@"basic_info"], (NSString *)ACFacebookPermissionsKey,
ACFacebookAudienceEveryone, (NSString *)ACFacebookAudienceKey,
nil];
[_accountStore requestAccessToAccountsWithType:acctType options:options completion:^(BOOL granted, NSError *error) {
if (granted == YES) {
[self.accountStore saveAccount:newAccount withCompletionHandler:^(BOOL success, NSError *error) {
if (success) {
NSLog(@"the account was saved!");
}
else {
if ([error code] == ACErrorPermissionDenied) {
NSLog(@"Got a ACErrorPermissionDenied, the account was not saved!");
}
NSLog(@"the account was not saved! %d, %@", [error code], error);
}
}];
}
else {
NSLog(@"ERR: %@ ",error);
}
}];
}
我在那里添加了对requestAccessToAccountsWithType的调用,因为没有我从saveAccount获得ACErrorPermissionDenied。当我运行这个时,我确实看到我的应用程序在Facebook对话框中暂时滑动(如果我在Facebook的网站上删除了我的应用程序,它会显示完整的对话框,询问我授予的权限。)
问题在于授予永远是NO,所以我永远不会有机会保存帐户。我在这里缺少什么?
我在安装了Facebook App的真实设备上运行它。
感谢您的帮助,谢谢!
答案 0 :(得分:1)
没有可用的解决方案。 iOS原生facebook应用程序不允许将帐户写入或保存到ACAccountStore
。它只允许从ACAccountStore
访问帐户。 iOS仅允许一次存储1个facebook帐户。尝试执行这些步骤,您将很容易理解,
将Facebook帐户添加到设置应用程序并尝试获取访问权限。它将获得许可。
删除帐户并尝试获取拒绝访问的权限。
添加一个Facebook帐户并获取访问权限并尝试将新帐户保存到ACAccountStore
,它会说原始应用程序不允许将帐户保存到ACAccountStore
。
建议的解决方案是,将帐户添加到设置应用程序并使用它登录并使用社交框架或presentOSIntegratedDialog
进行共享。