-->

在应用程序内购买的iOS访问的AppleID(In App Purchase iOS access

2019-08-04 15:10发布

有没有一种方法来访问的Apple ID由用户在身份验证对话框中输入而做购买后在应用程序内购买(电子邮件或内部ID)是做什么?

Answer 1:

在正式申请,也没有访问它的方式,因为这将极大强加的安全漏洞(例如,人们可以很容易地发送垃圾邮件到指定的E-mail地址)。

但是,如果您使用的是越狱的设备,你可以从钥匙串的必要信息。 适当的钥匙串项目有自己的svce键设置为com.apple.itunesstored.token ,和E-mail地址对应于acct关键。 安全类这些条目是kSecClassGenericPassword 。 只要确保你使用相应的权利(你需要协同设计您的应用程序"keychain-access-groups" = "*" )。

用于检索所需信息的实际的例子是这样的:

#import <CoreFoundation/CoreFoundation.h>
#import <Foundation/Foundation.h>
#import <Security/Security.h>

int main()
{
    NSMutableDictionary *query = [NSMutableDictionary dictionary];
    [query setObject:kSecClassGenericPassword forKey:kSecClass];
    [query setObject:kSecMatchLimitAll forKey:kSecMatchLimit];
    [query setObject:kCFBooleanTrue forKey:kSecReturnAttributes];
    [query setObject:kCFBooleanTrue forKey:kSecReturnRef];
    [query setObject:kCFBooleanTrue forKey:kSecReturnData];
    NSArray *items = nil;
    SecItemCopyMatching(query, &items);

    for (NSDictionary *item in items) {
        if ([[item objectForKey:@"svce"] isEqualToString:@"com.apple.itunesstored.token"]) {
            NSLog(@"Found iTunes Store account: %@", [item objectForKey:@"acct"]);
        }
    }

    return 0;
}

该entitlements.xml文件(使用协同设计ldid -Sentitlemens.xml binary ):

<plist>
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>*</string>
    </array>
</dict>
</plist>


文章来源: In App Purchase iOS access AppleId