2015-10-01 18 views
5

Tôi nhận thấy rằng một số mã tôi đã viết bằng SoundcloudPHP đã ngừng xác thực hôm nay, mặc dù nó hoạt động tốt trong lần trước tôi đã sử dụng nó vài ngày trước. Để loại bỏ vấn đề, tôi đã cố xác thực bằng cách sử dụng điểm cuối/oauth2/token nhưng phản hồi là một cơ thể 401 và trống. Tôi đã sử dụng các curl từ trang tại https://developers.soundcloud.com/docs/api/reference#tokensoundcloud/oauth2/token không trả lại gì ngoài phản hồi 401

Từ dòng lệnh:

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' 

Câu trả lời:

* 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): 

tôi đã tạo ra thẻ khách hàng mới để xem họ' d làm việc và tôi nhận được điều tương tự. Vì tôi đang sử dụng curl được cung cấp trong tài liệu tôi mong đợi nó hoạt động. Bất kỳ ý tưởng?

+1

Soundcloud viết và nó cần được cố định ngay bây giờ. – evenodd

Trả lời

4

Tôi là tác giả của thư viện php https://github.com/njasm/soundcloud.

Và người dùng của nó báo cáo cùng một vấn đề, trên thực tế những gì bạn nói cũng đúng là bây giờ, các ví dụ curl trên soundcloud không hoạt động nữa (vì một lý do lạ). Điều tra vấn đề để sửa chữa thư viện Tôi đã tìm thấy những gì có vẻ là một vấn đề kiểu nội dung.

Dường như loại nội dung bạn cần sử dụng khi yêu cầu/làm mới mã thông báo PHẢI luôn là ứng dụng/x-form-urlencoded và trước khi chúng tôi (thư viện) hoạt động tốt bằng cách liên lạc với loại nội dung ứng dụng/json.

Nếu bạn là người dùng thư viện của tôi, bạn nên cập nhật lên bản chính mới nhất. Nếu bạn có thể giúp kiểm tra sửa chữa, xin vui lòng báo cáo lại cho các trang vấn đề https://github.com/njasm/soundcloud/issues/25

Cập nhật: Nó khẳng định loại nội dung PHẢI application/x-form-urlencoded

Tôi đang tiến hành một số kiểm tra để xác nhận rằng đây là sự thật. Nếu vậy, tôi sẽ gắn thẻ cam kết với bản phát hành ổn định.

Chúc may mắn và hy vọng điều này sẽ hữu ích!

+0

Tuyệt vời. Cảm ơn bạn rất nhiều. Ứng dụng của tôi đang hoạt động trở lại. –

+0

@ tự-dealloc không có vấn đề, vui mừng để giúp đỡ. – njasm

+0

Cảm ơn bạn đã phản hồi và khắc phục! – RustyRamone

0

tôi quản lý để giải quyết vấn đề này cho các API Soundcloud cho Cocoa sử dụng giải pháp từ @njsam

trên SCSoundCloud.m, thêm những dòng này:

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

phương pháp của bạn nên được như thế này:

+ (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]; 
} 

Bên cạnh đó, chúng tôi cần phải cập nhật các OAuth2Client Thư viện here để có hỗ trợ cho kNXOAuth2AccountStoreCon figurationCustomHeaderFields

Hy vọng điều này có thể giúp một số người cho IOS

Các vấn đề liên quan