2012-01-03 23 views
5

En mi aplicación, quiero utilizar la API de Soundcloud con mi propio usuario de Soundcloud. El proceso de autenticación de la API de Soundcloud implica que un usuario sea redirigido a la página de inicio de Soundcloud, inicie sesión y autorice la aplicación, de modo que la página pueda usar la API para este usuario.Autenticación automática de autenticación API de Soundcloud sin interacción del usuario

Quiero automatizar todo el proceso, porque mi propio usuario es el único usuario que se autentica. ¿Es eso posible?

Aquí está mi código hasta ahora:

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

Pero la línea $accessToken = $soundcloud->accessToken(); se emite una excepción:

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

Respuesta

1

Busco lo mismo, pero de acuerdo con la soundcloud's api (comprobar el Autenticación sin la pantalla SoundCloud Connect párrafo):

// this example is not supported by the PHP SDK 

..y tampoco es compatible con Javascript.

He tryed para auth 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') 

..then el método de subida pitón:

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

y funciona muy bien.

Así que, por ahora, tiene 2 maneras:

  1. utilizar otro idioma, Python o Ruby (el único 2 SDK que realmente soporta esta característica) o utilizar un pequeño script en Python/Ruby como puente para esta necesidad particular;
  2. Añadir este funcionaliy al SDK de PHP (estoy tratando de hacerlo quick'n'dirty, si me da el éxito, voy a compartir;)
+0

estoy de acuerdo con Strae. El PHP SDK no funciona a la perfección. Lanza el error 401 cuando estamos tratando de obtener el token de acceso. –

+0

Tengo que decir que no pude agregar esta funcionalidad en el SDK php – Strae

4

Hola a todos,

aquí voy a compartir mi experiencia con la API de Soundcloud (PHP)

Ver mi pregunta: 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()); 
} 

Comprueba el valor $ _GET ['code']. Pero extraño no hay nada en $ _GET ['code'] esto está en blanco. The Soundcloud estaba devolviendo "El URL solicitada respondió con el código HTTP 0" de error. Esa vez estaba probando Soundcloud en WAMP Localhost.

Allot of Goggling Encontré una solución para solucionar "La URL solicitada respondió con el código HTTP 0". Tenía el archivo de descarga 'cacert.pem' y lo puse dentro de nuestra carpeta de proyecto de demostración (dentro de Servicios/Soundcloud /). Luego, después de que añade un poco de código en el archivo guardado 'clase 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); 

'clase Services_Soundcloud' y se trasladó en el servidor en vivo. Después de mover mi proyecto de WAMP a servidor en vivo, empiezo a verificarlo nuevamente. Cuando abro mi index.php Es pedirme que iniciar sesión

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

después de conectar todo funcionando sin problemas, Tengo mi información con

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

pero un nuevo problema que ocurre comienzo a lo que era que mi token de acceso siendo caduca y otra vez. Luego utilizo sesió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()); 
} 

Y ahora todo trabajo impresionante. puedo obtener todos mis detalles, rastrea todo desde el servidor SC

Espero que te ayude a luchar con Soundcloud API Cheers !!!! :)

+0

Hola Alp Por favor, verifique mi respuesta y hágamelo saber si es conveniente para usted. –

0

No hay magia detrás de su implementación en Python y Ruby SDK. Lo que sucede es que POST solicitud se envía a http://api.soundcloud.com/oauth2/token con los siguientes parametros:

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

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

El cuerpo de la respuesta contiene access_token, que se puede utilizar para la nueva autorización de sus peticiones. Por lo tanto, su GET solicitud al /me punto final se verá así: /me?oauth_token=YOUR_ACCESS_TOKEN&client_id=YOUR_CLIENT_ID. (Creo que client_id es redundante aquí, pero todas sus aplicaciones siguen agregándolo).

Aquí es el cartero Doc creé para la demostración: https://documenter.getpostman.com/view/3651572/soundcloud/7TT5oD9

Cuestiones relacionadas