В приложении Покупка iOS доступ AppleId
Есть ли способ получить доступ к идентификатору яблока, который вводится пользователем в диалоге аутентификации при совершении покупки в приложении (электронная почта или их внутренний идентификатор) после совершения покупки?
1 ответ
В официальном приложении нет способа получить к нему доступ, поскольку это может привести к значительным угрозам безопасности (например, можно легко отправить спам на указанный адрес электронной почты).
Однако, если вы используете взломанное устройство, вы можете получить необходимую информацию из цепочки для ключей. Соответствующие элементы брелка имеют свои 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;
}
Файл authorlements.xml (кодировка с использованием ldid -Sentitlemens.xml binary
):
<plist>
<dict>
<key>keychain-access-groups</key>
<array>
<string>*</string>
</array>
</dict>
</plist>