2010-04-26 4 views
3

Je construis un site, et j'ai besoin d'interroger mes deux dernières pistes depuis mon compte soundcloud et de les afficher sur ma page. J'ai lu la documentation de l'API Soundcloud mais elle semble obscure et loin de ma portée. J'ai installé la bibliothèque PHP pour utiliser l'API et Oauth, et configuré mon application SoundCloud pour obtenir mes clés client, mais je ne peux pas démarrer la session OAuth.API Soundcloud, PHP et OAuth

J'utilise ce library.

J'ai besoin de récupérer les 2 dernières pistes de mon compte Soundcloud. Après avoir besoin des fichiers de la bibliothèque (soundcloud.php et oauth.php), je dois définir quatre paramètres: $ consumer_key, $ consumer_secret, $ callback_url, $ tmp_path.

J'ai déjà mes clés et mon dossier de cache accessible en écriture. Je ne sais pas quelle est mon URL de rappel. En outre, je dois dire que je ne trouve aucun code d'exemple de travail, donc je ne peux même pas commencer à écrire quoi que ce soit. Donc bloqué!

Y at-il un moyen d'automatiser le processus OAuth sans invoquer une autre fenêtre, mon jeton OAuth est donc demandé dans mon script PHP ?. Je me demandais si vous pourriez peut-être me donner un exemple de code pour ce faire. Ce serait génial !!

+0

Pouvez-vous donner plus d'informations? Qu'attendez-vous et que remplissez-vous? Peut-être un échantillon de code. – Ikke

+0

@Ikke Bonjour! Merci d'avoir répondu si vite. J'ai besoin de récupérer les 2 dernières pistes de mon compte Soundcloud. Après avoir besoin des fichiers de la bibliothèque (soundcloud.php et oauth.php), je dois définir quatre paramètres: $ consumer_key, $ consumer_secret, $ callback_url, $ tmp_path. J'ai déjà mes clés et mon dossier de cache accessible en écriture. Je ne sais pas quelle est mon URL de rappel. En outre, je dois dire que je ne trouve pas de code d'exemple, donc je ne peux même pas commencer à écrire quoi que ce soit. Donc bloqué! Toutes les suggestions seraient grandement appréciées. – fedeisas

+0

Ajoutez ceci à la question pour améliorer la question. – Ikke

Répondre

2

Ceci peut vous être utile. Une fois connecté, il intègre mes pistes préférées dans la page. Vous pouvez changer $ favs pour charger vos propres chansons au lieu de vos favoris à la place.

Notez également que mon fichier config.php contient ma clé consumer_key, consumer_secret et mon callback_url.

$callback_url = 'http://localhost/soundcloud';

Vous voulez qu'il soit égal au lieu où votre script php est.

<?php 
    require_once ('php-soundcloud/mptre-php-soundcloud-644bb0e/oauth.php'); 
    require_once ('php-soundcloud/mptre-php-soundcloud-644bb0e/soundcloud.php'); 
    require_once ('config.php'); 

session_start(); 

// Clear the session i.e delete all stored tokens. 
if (isset($_GET['logout'])) { 
    session_destroy(); 
} 

// Variables used for verifying the status of the "OAuth dance". 
$oauth_token = (isset($_GET['oauth_verifier'])) 
    ? $_GET['oauth_verifier'] 
    : ((isset($_SESSION['oauth_access_token'])) ? $_SESSION['oauth_access_token'] : NULL); 
$oauth_request_token = (isset($_SESSION['oauth_request_token'])) 
    ? $_SESSION['oauth_request_token'] 
    : NULL; 
$oauth_request_token_secret = (isset($_SESSION['oauth_request_token_secret'])) 
    ? $_SESSION['oauth_request_token_secret'] 
    : NULL; 

if (isset($oauth_token) && isset($oauth_request_token) && isset($oauth_request_token_secret)) { 
    // Retreive access tokens if missing. 
    if (!isset($_SESSION['oauth_access_token']) && !isset($_SESSION['oauth_access_token_secret'])) { 
     $soundcloud = new Soundcloud(
      $consumer_key, 
      $consumer_secret, 
      $_SESSION['oauth_request_token'], 
      $_SESSION['oauth_request_token_secret'] 
     ); 
     $token = $soundcloud->get_access_token($oauth_token); 
     $_SESSION['oauth_access_token'] = $token['oauth_token']; 
     $_SESSION['oauth_access_token_secret'] = $token['oauth_token_secret']; 
    } 

    // Construct a fully authicated connection with SoundCloud. 
    $soundcloud = new Soundcloud(
     $consumer_key, 
     $consumer_secret, 
     $_SESSION['oauth_access_token'], 
     $_SESSION['oauth_access_token_secret'] 
    ); 

    // Get basic info about the authicated visitor. 
    $me = $soundcloud->request('me'); 
    $me = new SimpleXMLElement($me); 
    $me = get_object_vars($me); 

    // Get some embedding code for favs 
    $favs = $soundcloud->request('http://api.soundcloud.com/users/'.$me['id'].'/favorites/'); 
    $favs = new SimpleXMLElement($favs); 

} else { 
    // This is the first step in the "OAuth dance" where we ask the visitior to authicate himself. 
    $soundcloud = new Soundcloud($consumer_key, $consumer_secret); 
    $token = $soundcloud->get_request_token($callback_url); 

    $_SESSION['oauth_request_token'] = $token['oauth_token']; 
    $_SESSION['oauth_request_token_secret'] = $token['oauth_token_secret']; 

    $login = $soundcloud->get_authorize_url($token['oauth_token']); 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>SoundCloud PHP API Wrapper</title> 
    <meta name="author" content="Anton Lindqvist" /> 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
    <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.7.0/build/reset/reset-min.css" /> 
    <link rel="stylesheet" type="text/css" href="assets/css/style.css" /> 
</head> 
<body> 
    <div id="wrapper"> 
     <div id="content"> 
      <?php if (isset($me)): ?> 
       <a class="logout" href="?logout=true">logout</a> 
      <?php endif; ?> 
      <div id="header"> 
       <h1>SoundCloud PHP API Wrapper</h1> 
      </div> 
      <?php if (isset($login)): ?> 
      <h2>What is this?</h2> 
      <p>This is a basic demo</p> 
      <h2>How to start?</h2> 
      <p><a class="button" href="<?php echo $login; ?>">login with your SoundCloud account</a></p> 
      <?php elseif (isset($me)): ?> 
       <div id="profile"> 
        <h2> 
        <a href="<?php echo $me['permalink-url']; ?>"><?php echo $me['permalink']; ?></a> 
        </h2> 
       </div> 
       <div class="clear"></div> 

       <div id="favs"> 
       <?php 
        if (isset($favs)){ 

        foreach($favs->track as $fav){ 
         $permalink_url = $fav->{'permalink-url'}; 
         $permalink_url = urlencode($permalink_url); 

         $f = simplexml_load_file('http://soundcloud.com/oembed?url='.$permalink_url); 
         echo $f->html; 
        } 

        } else { 
        echo "fail"; 
        } 
       ?> 
       </div> 
      <?php endif; ?> 
     </div> 
    </div> 
</body> 
</html> 

Notez également, que je suis un noob php, en utilisant cette api pour la première fois ... alors mes capacités n'étirent pas ce passé pour le moment. La plupart de ceci a été "emprunté" de la démo qui vient avec la bibliothèque de wrapper de php que vous employez.

Espérons que ça aide quand même :)

ps. Vous ne savez pas s'il existe un moyen d'automatiser le processus OAuth sans invoquer une autre fenêtre pour le moment.

+0

Plus je viens de remarquer que la connexion/déconnexion nécessite 2 tentatives avant le succès :( – colinjwebb