gpt4 book ai didi

ios - 使用 ACAccountStore 保存 Facebook 帐户

转载 作者:可可西里 更新时间:2023-11-01 04:52:17 25 4
gpt4 key购买 nike

我正在尝试使用 iOS Social.framework 分享到 Facebook。但是,大多数用户不会在“设置”>“Facebook”中设置 Facebook,因此当您打开 UIActivityViewController 时,Facebook 不会出现,只是没有列出。 (参见 UIActivity with no settings for Facebook 或只是谷歌“facebook doesn't show in 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 的网站上删除我的应用程序,它确实会弹出完整的对话框,询问我授予的权限。)

问题是 granted 总是 NO,所以我从来没有机会保存帐户。我在这里缺少什么?

我在安装和设置了 Facebook 应用程序的真实设备上运行它。

在此方面,我将不胜感激,谢谢!

最佳答案

对此没有可用的解决方案。 iOS 原生 facebook 应用程序不允许写入或保存帐户到 ACAccountStore。它只允许从 ACAccountStore 访问帐户。 iOS 一次只允许存储 1 个 facebook 帐户。尝试做这些步骤你会很容易理解这一点,

  1. 在设置应用程序中添加一个 facebook 帐户并尝试获取访问权限。它将获得盛大的许可。

  2. 删除帐户并尝试获取它将拒绝访问的权限。

  3. 添加一个 facebook 帐户并获取访问权限并尝试将新帐户保存到 ACAccountStore,它会提示不允许 native 应用程序将帐户保存到 ACAccountStore .

建议的解决方案是,将帐户添加到设置 App 并使用它登录并使用 Social framework 或 presentOSIntegratedDialog 分享。

关于ios - 使用 ACAccountStore 保存 Facebook 帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20407468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com