2015-10-01 9 views
5

Zauważyłem, że niektóre z kodów, które napisałem przy użyciu SoundcloudPHP, przestały być uwierzytelniane dzisiaj, chociaż działało dobrze, gdy ostatnio użyłem go kilka dni temu. Aby wykorzenić problem, próbowałem uwierzytelnić za pomocą punktu końcowego/toauth2/token, ale odpowiedzią było 401 i puste ciało. Używam curl ze strony na https://developers.soundcloud.com/docs/api/reference#tokenSoundCloud/Oauth2/token nie zwracając nic poza odpowiedzią 401

Z wiersza poleceń:

curl -v -X POST "https://api.soundcloud.com/oauth2/token" -F 'client_id=MY_ID' -F 'client_secret=MY_SECRET' -F 'grant_type=authorization_code' -F 'redirect_uri=MY_REDIRECT' -F 'code=0000000EYAA1CRGodSoKJ9WsdhqVQr3g' 

odpowiedź:

* About to connect() to api.soundcloud.com port 443 (#0) 
* Trying 72.21.91.127... connected 
* Connected to api.soundcloud.com (72.21.91.127) port 443 (#0) 
* successfully set certificate verify locations: 
* CAfile: none 
    CApath: /etc/ssl/certs 
* SSLv3, TLS handshake, Client hello (1): 
* SSLv3, TLS handshake, Server hello (2): 
* SSLv3, TLS handshake, CERT (11): 
* SSLv3, TLS handshake, Server finished (14): 
* SSLv3, TLS handshake, Client key exchange (16): 
* SSLv3, TLS change cipher, Client hello (1): 
* SSLv3, TLS handshake, Finished (20): 
* SSLv3, TLS change cipher, Client hello (1): 
* SSLv3, TLS handshake, Finished (20): 
* SSL connection using AES256-SHA 
* Server certificate: 
* subject: OU=Domain Control Validated; CN=*.soundcloud.com 
* start date: 2014-04-22 16:52:12 GMT 
* expire date: 2016-04-08 10:08:48 GMT 
* subjectAltName: api.soundcloud.com matched 
* issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Domain Validation CA - SHA256 - G2 
* SSL certificate verify ok. 
> POST /oauth2/token HTTP/1.1 
> User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 
> Host: api.soundcloud.com 
> Accept: */* 
> Content-Length: 658 
> Expect: 100-continue 
> Content-Type: multipart/form-data; boundary=----------------------------e695cc6c8133 
> 
< HTTP/1.1 100 Continue 
< HTTP/1.1 401 Unauthorized 
< Access-Control-Allow-Headers: Accept, Authorization, Content-Type, Origin 
< Access-Control-Allow-Methods: GET, PUT, POST, DELETE 
< Access-Control-Allow-Origin: * 
< Access-Control-Expose-Headers: Date 
< Cache-Control: private, max-age=0, must-revalidate 
< Date: Thu, 01 Oct 2015 23:25:25 GMT 
< Server: am/2 
< Content-Length: 0 
< 
* Connection #0 to host api.soundcloud.com left intact 
* Closing connection #0 
* SSLv3, TLS alert, Client hello (1): 

mam stworzyło nowe znaczniki klienta, aby zobaczyć czy oni d pracy i dostaję to samo. Ponieważ używam zawinięcia podanego w dokumentach, spodziewałbym się, że zadziała. Jakieś pomysły?

+1

Soundcloud napisał i powinno być naprawione. – evenodd

Odpowiedz

4

Jestem twórcą biblioteki php https://github.com/njasm/soundcloud.

A użytkownicy tego zgłaszali ten sam problem, w rzeczywistości to, co mówisz, jest prawdą, że teraz, curl przykłady na soundcloud już nie działają (z jakiegoś dziwnego powodu). Badanie problemu w celu naprawienia biblioteki Znalazłem coś, co wydaje się być problemem typu treści.

Wygląda na to, że typ zawartości, którego należy użyć podczas żądania/odświeżenia tokenu, MUSI być zawsze plikiem typu application/x-form-urlencoded, a zanim my (biblioteka) działało poprawnie, komunikując się z typem treści application/json.

Jeśli jesteś użytkownikiem mojej biblioteki, powinieneś zaktualizować ją do najnowszego wzorca. Jeśli możesz pomóc w testowaniu poprawkę, proszę wróć do strony emisyjnej https://github.com/njasm/soundcloud/issues/25

Aktualizacja: Potwierdza to rodzaj zawartość musi być application/x-form-urlencoded

jestem prowadzącą część przetestuj, aby potwierdzić, że tak właśnie jest. Jeśli tak, oznaczę commit dla stabilnego wydania.

Powodzenia i mam nadzieję, że to pomoże!

+0

Awesome. Dziękuję bardzo. Moja aplikacja działa ponownie. –

+0

@ self-dealloc bez problemu, z przyjemnością pomożemy. – njasm

+0

Dzięki za odpowiedź i naprawę! – RustyRamone

0

udało mi się rozwiązać ten problem za pomocą interfejsu API Soundcloud kakao stosując roztwór z @njsam

na SCSoundCloud.m dodaj te linie:

NSDictionary *customHeaderFields = [NSDictionary dictionaryWithObject:@"application/x-www-form-urlencoded" forKey:@"Content-Type"]; 
[config setObject:customHeaderFields forKey:kNXOAuth2AccountStoreConfigurationCustomHeaderFields]; 

metoda powinna być taka:

+ (void)setClientID:(NSString *)aClientID 
     secret:(NSString *)aSecret 
    redirectURL:(NSURL *)aRedirectURL; 
{ 
    NSMutableDictionary *config = [NSMutableDictionary dictionary]; 

    [config setObject:aClientID forKey:kNXOAuth2AccountStoreConfigurationClientID]; 
    [config setObject:aSecret forKey:kNXOAuth2AccountStoreConfigurationSecret]; 
    [config setObject:aRedirectURL forKey:kNXOAuth2AccountStoreConfigurationRedirectURL]; 

    [config setObject:[NSURL URLWithString:kSCSoundCloudAuthURL] forKey:kNXOAuth2AccountStoreConfigurationAuthorizeURL]; 
    [config setObject:[NSURL URLWithString:kSCSoundCloudAccessTokenURL] forKey:kNXOAuth2AccountStoreConfigurationTokenURL]; 
    [config setObject:[NSURL URLWithString:kSCSoundCloudAPIURL] forKey:kSCConfigurationAPIURL]; 
    NSDictionary *customHeaderFields = [NSDictionary dictionaryWithObject:@"application/x-www-form-urlencoded" forKey:@"Content-Type"]; 
    [config setObject:customHeaderFields forKey:kNXOAuth2AccountStoreConfigurationCustomHeaderFields]; 

    [[NXOAuth2AccountStore sharedStore] setConfiguration:config forAccountType:kSCAccountType]; 
} 

Poza tym musieliśmy zaktualizować OAuth2Client Biblioteka here mieć wsparcie dla kNXOAuth2AccountStoreCon figurationCustomHeaderFields

nadzieję, że może pomóc niektórym ludziom dla IOS

Powiązane problemy