• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

objective-c - 在 App Purchase iOS 访问 AppleId

[复制链接]
菜鸟教程小白 发表于 2022-12-13 00:11:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在购买完成后进行应用内购买(电子邮件或他们的内部 ID)时,有没有办法访问用户在身份验证对话框中输入的 Apple ID?



Best Answer-推荐答案


在官方应用程序中,无法访问它,因为它会带来很大的安全漏洞(例如,可以轻松地将垃圾邮件发送到指定的电子邮件地址)。

但是,如果您使用的是越狱设备,则可以从钥匙串(keychain)中获取必要的信息。相应的钥匙串(keychain)项将其 svce 键设置为 com.apple.itunesstored.token,并且电子邮件地址对应于 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 二进制文件进行代码设计):

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

关于objective-c - 在 App Purchase iOS 访问 AppleId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023954/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap