Tengo problemas para acceder a los usuarios de Apple Music. el error que me sale es
[core] "Error returned from daemon: Error Domain=com.apple.accounts Code=9 "(null)"" 2019-02-04 19:14:37.250467+0900 SSAccountStore: Failed to fetch the backing accounts. error = Error Domain=com.apple.accounts Code=9 "(null)" 2019-02-04 19:14:37.252008+0900 [core] "Error returned from daemon: Error Domain=com.apple.accounts Code=9 "(null)"" 2019-02-04 19:14:37.252051+0900 SSAccountStore: Failed to fetch the backing accounts. error = Error Domain=com.apple.accounts Code=9 "(null)" 2019-02-04 19:14:37.253604+0900 SSAccountStore: Unable to get the local account. error = Error Domain=SSErrorDomain Code=100 "Cannot connect to iTunes Store" UserInfo={NSLocalizedDescription=Cannot connect to iTunes Store}Sin embargo, la parte extraña de este código es que también puedo recuperar el token de usuario de música. ¿Hay algo que me estoy perdiendo? Cualquier ayuda es apreciada.
static func auth(){ let cloudServiceController = SKCloudServiceController() let developerToken = "abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz" SKCloudServiceController.requestAuthorization { status in guard status == .authorized else { return } } cloudServiceController.requestCapabilities { capabilities, error in guard capabilities.contains(.musicCatalogPlayback) else { return } } cloudServiceController.requestUserToken(forDeveloperToken: developerToken, completionHandler: { token, error in guard let token = token else { return } UserDefaults.standard.set(token, forKey: "MUSIC_USER_TOKEN") UserDefaults.standard.set(developerToken, forKey: "DEVELOPER_TOKEN") print("Music User Token:", token) }) }Creo que debe llamar a cloudServiceController.requestUserToken una vez que el usuario haya autorizado después de completar el controlador para SKCloudServiceController.requestAuthorization
Estaba teniendo este mismo problema hasta que eliminé Bearer desde el principio de developerToken .
El ejemplo de código de OP tiene developerToken establecido en "abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz" , por lo que solo puedo suponer si OP incluye Bearer al principio o no.
Entonces, para ser más claro, esto es lo que estaba haciendo antes:
asyncAskMyServerToGenerateMyAppleMusicDeveloperJWTDevToken { rawDevToken in let formattedDeveloperToken = "Bearer \(rawDevToken)" SKCloudServiceController().requestUserToken(forDeveloperToken: formattedDeveloperToken) { possibleToken, _ in if let userMusicToken = possibleToken { YayIGotIt.forTheWin(userMusicToken) } } }Y esto es lo que hice para que realmente funcione:
asyncAskMyServerToGenerateMyAppleMusicDeveloperJWTDevToken { rawDevToken in //Not prepending "Bearer " anymore SKCloudServiceController().requestUserToken(forDeveloperToken: rawDevToken) { possibleToken, _ in if let userMusicToken = possibleToken { YayIGotIt.forTheWin(userMusicToken) //This actually fires now } } }