5

私のアプリケーションでは、自分のSoundcloudユーザーでSoundcloudAPIを使用したいと思います。Soundcloud API認証プロセスでは、ユーザーがSoundcloudホームページにリダイレクトされ、ログインしてアプリケーションを承認し、ページがこのユーザーのAPIを使用できるようにします。

認証されるのは自分のユーザーだけなので、プロセス全体を自動化したいと思います。それは可能ですか?

これまでの私のコードは次のとおりです。

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

しかし、この行$accessToken = $soundcloud->accessToken();は例外をスローします。

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

3 に答える 3

4

こんにちは、みんな、

ここでは、Soundcloud API (PHP) に関する私の経験を共有します。

私の質問を参照してください:リンク

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

$_GET['code'] 値を確認しました。しかし、奇妙なことに $_GET['code'] には何もありません。これは空白です。Soundcloud が「要求された URL は HTTP コード 0 で応答しました」というエラーを返していました。その時、WAMP Localhost で Soundcloud をテストしていました。

Goggling の割り当て 「要求された URL は HTTP コード 0 で応答しました」問題を修正する解決策を見つけました。「cacert.pem」ファイルをダウンロードして、デモ プロジェクト フォルダ (Services/Soundcloud/ 内) に配置しました。次に、「クラス 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);

「class Services_Soundcloud」ファイルを保存し、ライブサーバーに移動しました。プロジェクトを WAMP から Live サーバーに移動した後、再度チェックを開始します。index.php を開くと、ログインを求められます

ここに画像の説明を入力

I use my Facebook account to login.

ここに画像の説明を入力

after login it was asking to connect with Soundcloud

ここに画像の説明を入力

すべてがスムーズに機能するように接続した後、情報を取得しました

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

しかし、アクセストークンの有効期限が何度も切れるという新しい問題が発生し始めました。次に、セッションを使用します: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());
}

そして今、すべてがうまく機能しています。すべての詳細を取得し、SC サーバーからすべてを追跡できます

Soundcloud API Cheersで戦うのに役立つことを願っています!!!! :)

于 2013-01-31T14:08:41.333 に答える
1

私は同じことを探していますが、soundcloud の apiによると ( SoundCloud 接続画面なしの認証の段落を確認してください):

// this example is not supported by the PHP SDK

..そしてJavascriptでもサポートされていません。

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

..次にアップロードする python メソッド:

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

そしてそれはうまく動作します。

したがって、現時点では、次の 2 つの方法があります。

  1. 別の言語、Python または Ruby (この機能を実際にサポートする唯一の 2 つの SDK) を使用するか、この特定のニーズの橋渡しとして小さな python/ruby スクリプトを使用します。
  2. この機能を PHP SDK に追加します (私は手早くやろうとしています。成功したら共有します ;)
于 2012-05-28T09:50:20.947 に答える