2012-01-03 39 views
5

Trong ứng dụng của tôi, tôi muốn sử dụng API Soundcloud với người dùng Soundcloud của riêng mình. Quá trình xác thực API Soundcloud liên quan đến việc người dùng được chuyển hướng đến trang chủ Soundcloud, đăng nhập và cho phép ứng dụng, để trang có thể sử dụng API cho người dùng này.Xác thực tự động Soundcloud PHP Api mà không có sự tương tác của người dùng

Tôi muốn tự động hóa toàn bộ quá trình, bởi vì người dùng của riêng tôi là người dùng duy nhất được xác thực. Điều đó có thể không?

Đây là mã của tôi cho đến nay:

$soundcloud = new \Services_Soundcloud(
     '**', 
     '**', 
     'http://**' 
    ); 

    $authorizeUrl = $soundcloud->getAuthorizeUrl(); 

    $accessToken = $soundcloud->accessToken(); 

    try { 
     $me = json_decode($soundcloud->get('me'), true); 
    } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { 
     exit($e->getMessage()); 
    } 

Nhưng dòng $accessToken = $soundcloud->accessToken(); ném một ngoại lệ:

The requested URL responded with HTTP code 401. 
500 Internal Server Error - Services_Soundcloud_Invalid_Http_Response_Code_Exception 

Trả lời

1

Tôi đang tìm kiếm những điều tương tự, nhưng theo soundcloud's api (kiểm tra Xác thực mà không có Màn hình kết nối SoundCloud đoạn):

// this example is not supported by the PHP SDK 

..và không được Javascript hỗ trợ.

Tôi đã tryed để auth với python:

# create client object with app and user credentials 
client = soundcloud.Client(client_id='YOUR_CLIENT_ID', 
          client_secret='YOUR_CLIENT_SECRET', 
          username='YOUR_USERNAME', 
          password='YOUR_PASSWORD') 

..then phương pháp upload python:

# upload audio file 
track = client.post('/tracks', track={ 
    'title': 'This is my sound', 
    'asset_data': open('file.mp3', 'rb') 
}) 

và nó hoạt động tốt.

Vì vậy, bây giờ, bạn có 2 cách:

  1. Sử dụng một ngôn ngữ khác, Python hay Ruby (chỉ 2 sdk mà thực sự hỗ trợ tính năng này) hoặc sử dụng một kịch bản python/ruby ​​nhỏ như một cầu nối cho nhu cầu đặc biệt này;
  2. Thêm funcionaliy này để SDK PHP (i đang cố gắng để làm điều đó quick'n'dirty, nếu tôi có được thành công, tôi sẽ chia sẻ;)
+0

Tôi đồng ý với Strae. PHP SDK không hoạt động hoàn hảo. Nó đang ném lỗi 401 khi chúng tôi đang cố gắng lấy mã thông báo truy cập. –

+0

Tôi phải nói rằng tôi không thể thêm chức năng này vào trong php SDK – Strae

4

Hi All,

Ở đây tôi sẽ chia sẻ kinh nghiệm của tôi với Soundcloud API (PHP)

Xem Câu hỏi của tôi: Link

Recently I started to work with Sound cloud API (PHP) and I decided to use PHP API by 

https://github.com/mptre/php-soundcloud. 

But When I was trying to get access token from Sound cloud server by this code: 
// Get access token 
try { 
    $accessToken = $soundcloud->accessToken($_GET['code']); 
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { 
    exit($e->getMessage()); 
} 

Tôi đã kiểm tra giá trị $ _GET ['code']. Nhưng lạ là không có gì trong $ _GET ['code'] cái này trống. Soundcloud đã trả lại "The URL được yêu cầu đã phản hồi với lỗi HTTP mã 0". Lúc đó tôi đã thử nghiệm Soundcloud trên WAMP Localhost.

Allot of Goggling Tôi tìm thấy giải pháp để khắc phục "URL được yêu cầu đã trả lời bằng mã HTTP 0". Tôi đã tải xuống tệp 'cacert.pem' và đặt bên trong thư mục dự án demo của chúng tôi (bên trong Dịch vụ/Soundcloud /). Sau đó, sau khi tôi thêm một số mã trong

function protected function _request($url, $curlOptions = array()). 
// My code in side function 
$curlPath = realpath(getcwd().'\Services\cacert.pem');   
$curlSSLSertificate = str_replace("\\", DIRECTORY_SEPARATOR, $curlPath);   
curl_setopt($ch, CURLOPT_CAINFO, $curlSSLSertificate); 

tập tin đã lưu 'lớp Services_Soundcloud' 'lớp Services_Soundcloud' và chuyển về máy chủ trực tiếp. Sau khi di chuyển dự án của tôi từ WAMP sang Live server, tôi bắt đầu kiểm tra lại. Khi tôi mở index.php của tôi nó hỏi tôi để đăng nhập

enter image description here

I use my Facebook account to login. 

enter image description here

after login it was asking to connect with Soundcloud 

enter image description here

sau khi kết nối tất cả mọi thứ làm việc trơn tru, Tôi nhận được thông tin của tôi với

$me = json_decode($soundcloud->get('me')); 

nhưng một vấn đề mới bắt đầu xảy ra mà là truy cập của tôi thẻ bị hết hạn một lần nữa và một lần nữa. Sau đó, tôi sử dụng phiên: D

// code for access token 
$code = $_GET['code']; 
// Get access token 
try { 
    if(!isset($_SESSION['token'])){ 
     $accessToken = $soundcloud->accessToken($code); 
     $_SESSION['token'] = $accessToken['access_token']; 
    }else{ 
     $soundcloud->setAccessToken($_SESSION['token']); 
    } 
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { 
    exit($e->getMessage()); 
} 

Và bây giờ mọi thứ đều hoạt động tuyệt vời. tôi có thể lấy tất cả chi tiết của tôi, theo dõi mọi thứ từ máy chủ SC

Hy vọng nó sẽ giúp bạn chiến đấu với Soundcloud API Chúc mừng !!!! :)

+0

Hi Alp Vui lòng kiểm tra câu trả lời của tôi và vui lòng cho tôi biết nếu nó hoạt động cho bạn. –

0

Không có phép thuật nào sau khi triển khai trong Python và Ruby SDK. gì đang xảy ra là POST yêu cầu được gửi đến http://api.soundcloud.com/oauth2/token với params sau:

client_id='YOUR_CLIENT_ID' 
    client_secret='YOUR_CLIENT_SECRET' 
    username='YOUR_USERNAME' 
    password='YOUR_PASSWORD' 

Content-Type: application/x-www-form-urlencoded

Cơ thể phản ứng chứa access_token, mà có thể được sử dụng cho phép thêm các yêu cầu của bạn. Do đó, yêu cầu GET của bạn tới /me điểm cuối sẽ giống như sau: /me?oauth_token=YOUR_ACCESS_TOKEN&client_id=YOUR_CLIENT_ID. (Tôi tin rằng, client_id là dư thừa ở đây nhưng tất cả các ứng dụng của họ tiếp tục thêm nó).

Dưới đây là Tài liệu người viết bài mà tôi đã tạo để trình diễn: https://documenter.getpostman.com/view/3651572/soundcloud/7TT5oD9

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