2012-01-03 7 views
5

Dans mon application, je souhaite utiliser l'API Soundcloud avec mon propre utilisateur Soundcloud. Le processus d'authentification de l'API Soundcloud implique qu'un utilisateur soit redirigé vers la page d'accueil Soundcloud, se connecte et autorise l'application, afin que la page puisse utiliser l'API pour cet utilisateur.Authentification automatique de Soundcloud PHP Api sans intervention de l'utilisateur

Je veux automatiser l'ensemble du processus, car mon propre utilisateur est le seul utilisateur authentifié. Est-ce possible?

Voici mon code à ce jour:

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

Mais la ligne $accessToken = $soundcloud->accessToken(); jette une exception:

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

Répondre

1

Je cherche la même chose, mais selon la soundcloud's api (vérifiez la Authentification sans l'écran SoundCloud Connect paragraphe):

// this example is not supported by the PHP SDK 

..et n'est pas supporté par le Javascript non plus.

J'ai tryed auth avec 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 la méthode python de téléchargement:

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

et cela fonctionne très bien.

Donc, pour l'instant, vous avez 2 façons:

  1. Utilisez une autre langue, Python ou Ruby (le seul 2 sdk qui soutiennent réellement cette fonction) ou d'utiliser un petit script python/ruby ​​comme un pont pour ce besoin particulier;
  2. Ajouter cette funcionaliy au SDK PHP (je suis en train de le faire quick'n'dirty, si je reçois le succès, je vais partager;)
+0

Je suis d'accord avec Strae. Le SDK PHP ne fonctionne pas parfaitement. Il lance une erreur 401 lorsque nous essayons d'obtenir un jeton d'accès. –

+0

Je dois dire que j'ai échoué à ajouter cette fonctionnalité dans le SDK php – Strae

4

Salut à tous,

ici, je vais partager mon expérience avec l'API Soundcloud (PHP)

Voir ma question: 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()); 
} 

J'ai vérifié la valeur $ _GET ['code']. Mais étrange il n'y a rien dans $ _GET ['code'] c'est vide. Le Soundcloud renvoyait "L'URL demandée a répondu avec le code HTTP 0" erreur. Cette fois, j'étais test Soundcloud sur WAMP Localhost.

Allot of Goggling J'ai trouvé une solution à corriger "Le problème de l'URL demandée a répondu avec le code HTTP 0". J'ai téléchargé le fichier 'cacert.pem' et j'ai mis dans notre dossier de projet de démo (dans Services/Soundcloud /). Puis après avoir ajouté un code dans le fichier « 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); 

Enregistré « classe Services_Soundcloud » et déplacé sur le serveur en direct. Après déplacer mon projet de WAMP au serveur Live je commence à le vérifier à nouveau. Quand j'ouvre mon index.php il me demander de vous connecter

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

se connecter après tout travail en douceur, Je suis mes infos avec

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

mais un nouveau problème commence à se produire ce qui était que mon jeton d'accès étant expirer encore et encore. Puis-je utiliser la session: 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()); 
} 

Et maintenant tout fonctionne génial. je peux obtenir tous mes détails, pistes tout du serveur SC

Espérons que cela vous aidera à se battre avec Soundcloud API Cheers !!!! :)

+0

Salut Alp S'il vous plaît vérifier ma réponse et veuillez me faire savoir si cela fonctionne pour vous. –

0

Il n'y a pas de magie derrière son implémentation dans Python et Ruby SDK. Ce qui se passe est que la demande est envoyée à POSThttp://api.soundcloud.com/oauth2/token avec les params suivants:

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

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

Le corps de la réponse contient access_token, qui peut être utilisé pour solliciter l'autorisation de vos demandes. Ainsi, votre demande GET au /me ressemblera à: /me?oauth_token=YOUR_ACCESS_TOKEN&client_id=YOUR_CLIENT_ID. (Je crois, client_id est redondant ici mais toutes leurs applications continuent à l'ajouter).

Voici le Postman Doc j'ai créé pour la démonstration: https://documenter.getpostman.com/view/3651572/soundcloud/7TT5oD9

Questions connexes