2012-01-03 14 views
5

Nella mia applicazione voglio utilizzare l'API Soundcloud con il mio utente Soundcloud. Il processo di autenticazione dell'API Soundcloud prevede che un utente venga reindirizzato alla home page di Soundcloud, acceda e autorizzi l'applicazione, in modo che la pagina possa utilizzare l'API per questo utente.Autenticazione automatica PHP Acloud Soundcloud senza interazione dell'utente

Voglio automatizzare l'intero processo, perché il mio utente è l'unico utente che viene autenticato. È possibile?

Ecco il mio codice finora:

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

Ma la linea $accessToken = $soundcloud->accessToken(); genera un'eccezione:

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

risposta

1

sto cercando la stessa cosa, ma secondo il soundcloud's api (verificare la Autenticazione senza SoundCloud Connect Screen paragrafo):

// this example is not supported by the PHP SDK 

..e non è supportato nemmeno dal Javascript.

Ho provato di autenticarsi con 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') 

..quindi il metodo di caricamento pitone:

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

e funziona bene.

Quindi, per ora, ci sono 2 modi:

  1. usare un'altra lingua, Python o Ruby (gli unici 2 SDK che in realtà supporta questa funzione) oppure utilizzare un piccolo script python/ruby ​​come un ponte per questo particolare bisogno;
  2. Aggiungere questo funcionaliy alla SDK PHP (sto cercando di farlo frettoloso e approssimativo, se ho successo, io condividere;)
+0

sto d'accordo con Strae. L'SDK PHP non funziona perfettamente. Sta generando l'errore 401 quando stiamo cercando di ottenere un token di accesso. –

+0

Devo dire che non sono riuscito ad aggiungere questa funzionalità nel php SDK – Strae

4

Ciao a tutti,

qui ho intenzione di condividere la mia esperienza con Soundcloud API (PHP)

Vedere la mia domanda: 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()); 
} 

Ho controllato il valore $ _GET ['code']. Ma strano non c'è nulla in $ _GET ['codice'] questo è vuoto. Il Soundcloud stava restituendo "L'URL richiesto ha risposto con codice HTTP 0". Quella volta ero testare Soundcloud su WAMP Localhost.

Allot of Goggling Ho trovato una soluzione per risolvere "L'URL richiesto ha risposto con il codice HTTP 0". Ho scaricato il file 'cacert.pem' e inserito nella nostra cartella del progetto demo (all'interno di Servizi/Soundcloud /). Poi dopo ho aggiunto un po 'di codice nel file 'di classe Services_Soundcloud'

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

Saved 'classe Services_Soundcloud' e si è trasferito sul server di vivere. Dopo sposta il mio progetto da WAMP al server Live. Ricomincio a controllarlo. Quando apro il mio index.php E 'chiedere a me di login

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

dopo collegare tutto funziona liscio, Ho avuto le mie informazioni con

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

ma un nuovo problema che si verificano inizio a cui era che il mio token di accesso essere scadono ancora e ancora. Poi io uso sessione: 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()); 
} 

E ora tutto funziona impressionante. posso ottenere tutti i miei dettagli, traccia tutto dal server SC

Spero che ti aiuti a combattere con Soundcloud API Cheers !!!! :)

+0

Ciao Alp Si prega di controllare la mia risposta e cortesemente fammi sapere se è lavoro per voi. –

0

Non c'è alcuna magia dietro la sua implementazione in Python e Ruby SDK. Quello che sta succedendo è che POST richiesta viene inviata al http://api.soundcloud.com/oauth2/token con i seguenti params:

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

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

Il corpo di risposta contiene access_token, che può essere utilizzato per l'ulteriore autorizzazione delle vostre richieste. Pertanto, la tua richiesta all'aspetto avrà il seguente aspetto: /me?oauth_token=YOUR_ACCESS_TOKEN&client_id=YOUR_CLIENT_ID. (Credo che lo client_id sia ridondante qui, ma tutte le loro app continuano a aggiungerlo).

Ecco il postino doc che ho creato per la dimostrazione: https://documenter.getpostman.com/view/3651572/soundcloud/7TT5oD9

Problemi correlati