2012-01-03 14 views
5

W mojej aplikacji chcę korzystać z interfejsu Soundcloud API z własnym użytkownikiem Soundcloud. Proces uwierzytelniania interfejsu API Soundcloud obejmuje przekierowanie użytkownika na stronę główną Soundcloud, logowanie i autoryzację aplikacji, aby strona mogła korzystać z interfejsu API tego użytkownika.Automatyczne uwierzytelnianie Soundcloud PHP Api bez interakcji użytkownika

Chcę zautomatyzować cały proces, ponieważ mój własny użytkownik jest jedynym użytkownikiem, który zostaje uwierzytelniony. Czy to jest możliwe?

Oto mój kod do tej pory:

$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()); 
    } 

Ale linia $accessToken = $soundcloud->accessToken(); zgłasza wyjątek:

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

Odpowiedz

1

szukam tego samego, ale według soundcloud's api (Sprawdź Uwierzytelnianie bez ekranu SoundCloud Connect akapit):

// this example is not supported by the PHP SDK 

..i nie jest obsługiwany przez JavaScript ani.

Mam tryed dopuszczonego z Pythona:

# 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 metoda przesyłania python:

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

i to działa dobrze.

Więc teraz, masz 2 sposoby:

  1. używać innego języka, Python czy Ruby (tylko 2 SDK, który faktycznie obsługiwać tę funkcję) lub użyć małego skryptu python/ruby ​​jako pomost dla ta szczególna potrzeba;
  2. Dodaj funcionaliy do SDK PHP (staram się to zrobić quick'n'dirty, jeśli mogę uzyskać sukces, będę dzielić;)
+0

jestem zgodzić się z Strae. PHP SDK nie działa idealnie. Występuje błąd 401, gdy próbujemy uzyskać token dostępu. –

+0

Muszę powiedzieć, że nie udało mi się dodać tej funkcjonalności w php SDK – Strae

4

Hi,

tutaj mam zamiar podzielić się moim doświadczeniem z Soundcloud API (PHP)

Zobacz moje pytanie: 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()); 
} 

Sprawdziłem wartość $ _GET ["kod"]. Ale dziwne, że nie ma w nim nic w $ _GET ['code'] to jest puste. The Soundcloud powrócił "Żądany adres URL odpowiedział błędem HTTP 0" 0 ". Tym razem byłem testowania Soundcloud na WAMP Localhost.

Allot of Goggling Znalazłem rozwiązanie do naprawy "Żądany adres URL odpowiedział z powodu błędu HTTP 0". Pobrałem plik "cacert.pem" i umieściłem go w naszym folderze projektu demonstracyjnego (wewnątrz Services/Soundcloud /). Następnie po dodaniu kodu w

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); 

pliku 'class Services_Soundcloud' zbawieni 'class Services_Soundcloud' i przeniósł na żywo serwera. Po przenieś mój projekt z WAMP na serwer Live, zacznę go sprawdzać ponownie. Kiedy otwieram moje index.php to pytaj się zalogować

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

po podłączeniu wszystko działa gładkie, Dostałem informacje z

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

ale nowy problem występujący które zaczynają się, że mój token dostępu czym wygasa ponownie. Następnie używam sesji: 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()); 
} 

a teraz wszystko działa super. mogę uzyskać wszystkie moje dane, śledzić wszystko od serwera SC

Mam nadzieję, że pomoże Ci to w walce z API Soundcloud! :)

+0

Hi Alp Proszę sprawdzić moją odpowiedź i uprzejmie daj mi znać, czy to działa dla Ciebie. –

0

Nie ma magii za jego implementacją w Pythonie i Ruby SDK. Co się dzieje jest to, że POST żądanie jest wysyłane do http://api.soundcloud.com/oauth2/token z następujących params:

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

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

Ciało odpowiedź zawiera access_token, które mogą być wykorzystane do dalszego upoważnienia swoich żądań. W związku z tym twój punkt końcowy do punktu końcowego będzie wyglądał następująco: . (Wydaje mi się, że tutaj client_id jest zbędny, ale wszystkie aplikacje nadal go dodają).

Oto Postman Doc stworzyłem dla demonstracji: https://documenter.getpostman.com/view/3651572/soundcloud/7TT5oD9

Powiązane problemy