Я пытаюсь получить токен пользователя Apple Music

Вот мой код для получения токена пользователя

 NSString *developerToken = @"eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlVaMzI1Q0MyMkcifQ.eyJpc3MiOiJEWjI4TDk1OFBCIiwiaWF0IjoxNTI1MjY1NjE0LCJleHAiOjE1Mzg0Mzg0MDB9.frMVLzCx3oaUyqcBzZvSoB60LjCrtqmiCwf-ouQ1Y12UYpW5w8R-cmAX6N_Fwpz_l5CFe3OkYP3uET7uCPvyOw";
    [SKCloudServiceController requestAuthorization:^(SKCloudServiceAuthorizationStatus status) {
        self->cloudServiceController = [[SKCloudServiceController alloc] init];
        [self->cloudServiceController requestCapabilitiesWithCompletionHandler:^(SKCloudServiceCapability capabilities, NSError * _Nullable error) {
            [self->cloudServiceController requestStorefrontIdentifierWithCompletionHandler:^(NSString * _Nullable storefrontIdentifier,
                                                                                             NSError * _Nullable error) {
                NSString *identifier = [[storefrontIdentifier componentsSeparatedByString:@","] firstObject];
                identifier = [[identifier componentsSeparatedByString:@"-"] firstObject];
                if (@available(iOS 11.0, *)) {
                    [self->cloudServiceController requestUserTokenForDeveloperToken:developerToken completionHandler:^(NSString * _Nullable userToken, NSError * _Nullable error) {
                        NSLog(@"%@",error);
                        NSLog(@"%@",userToken);
                    }];
                } else {
                    // Fallback on earlier versions
                }
                //NSString *countryCode = [self countryCodeWithIdentifier:identifier];
            }];

        }];
    }];

но я получаю userToken как ноль и ошибку как

«Домен ошибки = SKErrorDomain Code = 7» (null)» UserInfo = {NSUnderlyingError = 0x1c08437b0 {Error Domain = SSErrorDomain Code = 109 «(null)» UserInfo = {NSUnderlyingError = 0x1c08437e0 {Error Domain = SSErrorDomain Code = 109 «Не удается подключиться к iTunes Store" UserInfo={NSLocalizedDescription=Не удается подключиться к iTunes Store, SSErrorHTTPStatusCodeKey=401}}}}}"

Что я делаю неправильно? пожалуйста помоги


person New Coder    schedule 14.05.2018    source источник
comment
Та же проблема для меня, с действительным токеном разработчика. Вы нашли решение?   -  person Florent Morin    schedule 17.07.2018
comment
нет, пока ничего   -  person New Coder    schedule 17.07.2018
comment
Вы нашли какое-нибудь решение?   -  person Aditya Ahuja    schedule 24.03.2020


Ответы (2)


Лично для меня проблема заключалась в отсутствии подписки на Apple Music; У меня была такая же ошибка (домен ошибки = код SKErrorDomain = 7).

Один из способов обойти это — проверить, есть ли у пользователя учетная запись Apple Music. Для этого (посредством документации Apple)

Свифт:

controller.requestCapabilities {(capabilities: SKCloudServiceCapability, error: Error?) in
   guard error == nil else { return }
   if capabilities.contains(.musicCatalogPlayback) {
      // CASE WHERE USER HAS APPLE MUSIC SUBSCRIPTION
      // GET USER TOKEN HERE
   } 
}

Цель-C:

[controller requestCapabilitiesWithCompletionHandler:^(SKCloudServiceCapability capabilities, NSError *error){
    if (error != nil) {
        // Handle error.
    } else if (capabilities & SKCloudServiceCapabilityMusicCatalogPlayback) {
         // CASE WHERE USER HAS APPLE MUSIC SUBSCRIPTION
         // GET USER TOKEN HERE
    }
}];
person Neloy Kundu    schedule 02.07.2020

Код ошибки SSErrorHTTPStatusCodeKey=401 обычно означает, что это несанкционированный запрос, что указывает мне на то, что ваш токен разработчика недействителен. Вы уверены, что это правильно отформатированный токен разработчика с неистекшим сроком действия?

person jeremyms    schedule 20.05.2018