2

我一直在使用 Accounts 框架,在测试期间我拒绝了应用程序访问 Accounts。现在,每次运行以下代码时都会返回 Denied。

[[self accountStore] requestAccessToAccountsWithType:twitterType options:nil completion:^(BOOL granted, NSError *error) {
    if (granted) {
        accounts = [[self accountStore] accountsWithAccountType:twitterType];
    } else if (error != nil) {
        NSLog(@"Failed to list Twitter accounts %@", error);
    } else {
        NSLog(@"Access denied");
    }
}];

糟糕的是我不知道在哪里重置它,谷歌搜索也无济于事。我已经看到如何在 iOS 上修复它,但我正在运行 Mac 应用程序并且该解决方案不适用。

Account Framework API 文档根本没有帮助。

掌脸。

4

2 回答 2

4

想通了,我找到了一个名为“~/Library//Application Support/com.apple.TCC/TCC.db”的应用程序ID的文件

这是一个 sqlite3 文件,所以运行sqlite3 "~/Library//Application Support/com.apple.TCC/TCC.db"然后在"access" 表中搜索您的应用程序,删除该行,如果您再次可以访问。

如果这没有帮助,还有一个名为~/Library/Accounts/Accounts3.sqlite的文件,其中包含您的应用程序的ZAUTHORIZATION 表。

于 2013-01-15T07:19:32.370 回答
1

由于大公司和其他公司的高调黑客攻击,提议的解决方案不再有效。该解决方案从未得到支持,是对黑客的邀请。正确的做法是使用 Apple 提供的工具:tccutil.

因此,请执行以下操作:

  1. 打开Terminal.
  2. Run tccutil reset <service> [bundle_id],其中<service>可以是AddressBook或 ,Calendar或者All带有要重置的捆绑包的可选 ID。

例子:

tccutil reset All com.apple.Terminal
于 2018-08-19T16:20:01.137 回答