PHPAPIを使用してSoundCloudHTML5ウィジェットをレンダリングしようとしていますが、コマンドを実行するたびに、ウィジェットのHTMLを返す必要があると思いますが、単に例外が発生します。
The requested URL responded with HTTP code 302
これはリダイレクトだと思います。私が知らないのは、なぜそれが私が今までに得たすべてなのか、またはウィジェットHTMLを実際に取得するためにそれについて何をすべきかということです。
APIのドキュメントには、PHPを使用してウィジェットを埋め込むには、次のようにする必要があると記載されています。
<?php
require_once 'Services/Soundcloud.php';
// create a client object with your app credentials
$client = new Services_Soundcloud('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET');
// get a tracks oembed data
$track_url = 'http://soundcloud.com/forss/flickermood';
$embed_info = $client->get('/oembed', array('url' => $track_url));
// render the html for the player widget
print $embed_info['html'];
私はこれを実行しています:
// NB: Fully authorised SoundCloud API instance all working prior to this line
// $this->api refers to an authorised instance of Services_Soundcloud
try {
$widget = array_pop(
json_decode( $this->api->get('oembed', array('url' => $track_url)) )
);
print_r($widget);
} catch (Exception $e)
{
print_r($e->getMessage());
}
ここで、「track_url」は実際には、同じAPIを使用してアプリの前半でSoundCloudにトラックオブジェクトを要求したときに返されるURLです。
そもそもこのURLが正しいかどうかはわかりません。これは、返されるトラックオブジェクトが次の形式で「uri」を提供するためです。
[uri] => https://api.soundcloud.com/tracks/62556508
ドキュメントの例にはすべてストレートなhttp://soundcloud.com/username/track-permalinkURLがありますが、パブリックトラックへの既知のパスを使用しても、APIoembedメソッドを実行しようとして失敗します...それでも302例外が発生します。
最後に、「get」コマンドで「allow_redirects」をfalseに設定することについての言及がありますが、APIへのクエリの作成に使用されるパラメーターに追加しても効果はありません。また、cURLオプションを追加してみましたが、それでも効果はありませんでした。
私は間違いなくSoundCloud内のトラックへのAPIアクセスを有効にしました。
これで壁から頭を叩くようなものです。誰かが何かポインタを持っているなら、私はそれらを聞いてとても感謝しています。わかりやすくするために、作成したAPIインスタンスを介してすべてのユーザーデータやコメントなどにアクセスできるため、正常に機能しているように見えます。