2010-04-26 7 views
3

Я создаю сайт, и мне нужно запросить мои последние два трека из моей учетной записи soundcloud и отобразить их на моей странице. Я читал документацию Soundcloud API, но это кажется неясным и далеким от моего охвата. Я установил библиотеку PHP для использования API и Oauth и настроил приложение SoundCloud, чтобы получить свои потребительские ключи, но я не могу начать сеанс OAuth.Soundcloud API, PHP и OAuth

Я использую это library.

Мне нужно получить последние 2 трека из моей учетной записи Soundcloud. После того, как мне потребуются файлы из библиотеки (soundcloud.php и oauth.php), мне нужно установить четыре параметра: $ consumer_key, $ consumer_secret, $ callback_url, $ tmp_path.

У меня уже есть ключи и папка для записи в кэше. Я не знаю, каков мой URL-адрес обратного вызова. Кроме того, я должен сказать, что я не могу найти код рабочего примера, поэтому я даже не могу ничего писать. Так заблокировано!

Есть ли способ автоматизировать процесс OAuth без вызова другого окна, поэтому мой токен OAuth запрашивается в моем PHP-скрипте ?.

Мне было интересно, может быть, вы могли бы передать мне пример кода для этого. Это было бы здорово !!

+0

Можете ли вы дать дополнительную информацию? Чего вы ожидаете и чем вы занимаетесь? Может быть, образец кода. – Ikke

+0

@Ikke Привет! Спасибо, что ответили так быстро. Мне нужно получить последние 2 трека из моей учетной записи Soundcloud. После того, как мне потребуются файлы из библиотеки (soundcloud.php и oauth.php), мне нужно установить четыре параметра: $ consumer_key, $ consumer_secret, $ callback_url, $ tmp_path. У меня уже есть ключи и папка для записи. Я не знаю, каков мой URL-адрес обратного вызова. Кроме того, я должен сказать, что я не могу найти код примера, поэтому я даже не могу ничего начать писать. Так заблокировано! Любые предложения были бы весьма полезными. – fedeisas

+0

Добавьте к этому вопрос, чтобы улучшить вопрос. – Ikke

ответ

2

Это может быть полезно вам. После входа в систему он вставляет мои любимые треки на страницу. Вы можете изменить $ favs, чтобы вместо этого загружать собственные песни вместо избранных.

Также обратите внимание, что мой config.php включает в себя my consumer_key, consumer_secret и мой callback_url.

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

Вы хотите, чтобы она равна место, где ваш PHP скрипт.

<?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> 

Также обратите внимание, что я PHP нуб, используя этот API в первый раз ... так что мои способности не растягивать мимо этого на данный момент. Большая часть этого была «заимствована» из демонстрации, которая поставляется с используемой библиотекой php-обертки.

Надеюсь, что это поможет :)

ps. Не уверен, есть ли способ автоматизировать процесс OAuth, не вызывая еще одно окно.

+0

Плюс Я только что заметил, что для входа/выхода требуется 2 попытки до успеха :( – colinjwebb

Смежные вопросы