我编写了一个 iPad (iOS 5+) 应用程序,它保存 GTM-Oauth 库以将 oauth 令牌保存到钥匙串。基于身份验证令牌的存在,我在视图控制器中执行不同的操作:
//Fetch the auth token from keychain
GTMOAuthAuthentication *auth = [self myCustomAuth];
//perform actions:
if (auth) {
BOOL didAuth = [GTMOAuthViewControllerTouch authorizeFromKeychainForName:@"My App: Custom Service" authentication:auth];
// if the auth object contains an access token, didAuth is now true
[self performSegueWithIdentifier..]
}
else {
//do something else
}
//The customAuth method:
- (GTMOAuthAuthentication *)myCustomAuth {
NSString *myConsumerKey = @"abcd"; // pre-registered with service
NSString *myConsumerSecret = @"efgh"; // pre-assigned by service
GTMOAuthAuthentication *auth;
auth = [[GTMOAuthAuthentication alloc] initWithSignatureMethod:kGTMOAuthSignatureMethodHMAC_SHA1
consumerKey:myConsumerKey
privateKey:myConsumerSecret] ;
// setting the service name lets us inspect the auth object later to know
// what service it is for
auth.serviceProvider = @"Custom Auth Service";
return auth;
}
虽然当我使用我的开发和临时分发配置文件对应用程序进行代码签名时,segue 工作正常(即 auth 存在于钥匙串中并返回 true),但在使用 appstore 分发配置文件时它不起作用,并且已被 Apple 拒绝为“展示虫子'。
我使用以下命令(来自 Apple 文档)检查了 appstore 配置文件的权利:
security cms -D -i /path/to/the.app/embedded.mobileprovision
在权利下,我可以看到:
<key>keychain-access-groups</key>
<array>
<string>{My Bundle seed identifier}.*</string>
</array>
有人可以让我知道可能是什么问题,以及如何确保我的应用商店构建中的钥匙串访问?