1

私はこれを過去1日かそこら運がなくても機能させようとしてきました。最終的にコードを最小限にまで単純化しましたが、解決策が見つからないようです。

$callbackURL は同じページに設定されているため、このページがコールバックされ、Soundcloud の確認手順の後に正常に返されます。

<?php
require_once ("inc/Soundcloud.php");

$client_id = 'CLIENT_ID';
$secret = 'SECRET_KEY';
$callbackURL = "CALL_BACK_URL";

if (!isset($_GET['code'])) {
    $client = new Services_Soundcloud($client_id, $secret, $callbackURL );
    $client -> setCurlOptions(array(CURLOPT_FOLLOWLOCATION => 1, CURLOPT_CAINFO => $_SERVER['DOCUMENT_ROOT'] . '\\audio\\lib\\inc\\cacert.pem'));

    if (!isset($accessToken)) {
        $authorizeUrl = $client -> getAuthorizeUrl(array('scope' => 'non-expiring'));
        echo "<a href='$authorizeUrl'>Connect</a>";
    }

} else {

    $client = new Services_Soundcloud($client_id, $secret, $callbackURL );
    $client -> setCurlOptions(array(CURLOPT_FOLLOWLOCATION => 1, CURLOPT_CAINFO => $_SERVER['DOCUMENT_ROOT'] . '\\audio\\lib\\inc\\cacert.pem'));
    $accessToken = $client -> accessToken($_GET['code']);
    echo "Token: $accessToken";
    $client -> setAccessToken($accessToken["access_token"]);
}
?>

エラー:

[27-Mar-2013 16:02:59 America/New_York] PHP Fatal error:  Uncaught exception 'Services_Soundcloud_Invalid_Http_Response_Code_Exception' with message 'The requested URL responded with HTTP code 401.' in D:\web\audio\lib\inc\Soundcloud.php:941
Stack trace:
#0 D:\web\audio\lib\inc\Soundcloud.php(817): Services_Soundcloud->_request('https://api.sou...', Array)
#1 D:\web\audio\lib\inc\Soundcloud.php(332): Services_Soundcloud->_getAccessToken(Array, Array)
#2 D:\web\audio\lib\auth.php(20): Services_Soundcloud->accessToken('...')
#3 {main}
  thrown in D:\web\audio\lib\inc\Soundcloud.php on line 941

問題は、$_GET['code'] が適切に設定されているにもかかわらず、$client->accessToken($_GET['code']) ステップで 401 エラーが継続的に発生することです。CURLOPT_CAINFO を削除すると、「応答コード 0」の問題が発生しますが、それを超えて作業しました。

どんな助けでも大歓迎です。

IIS と PHP 5.4

編集: この問題は、CURL の PEM ファイルへの絶対パスで解決されました。絶対パスではなく相対パスを使用しようとしたため、テスト セットアップでは一貫性がありませんでした。CURL を詳細に実行した後、結論に達しました。さらに、Soundcloud には問題があり、この問題のデバッグが困難でした。

4

2 に答える 2

0

この質問を投稿した後、上記のコードが断続的に機能し始めました。問題は、Soundcloud のサーバーにあるか、何か奇妙なことが起こっているようです。どのように修正されたかはわかりませんが、コードの変更が0の場合、更新によりトークンが返されました。もう一度試してみると、401 が返されました。原因はわかりませんが、上記のコードで (最終的には) トークンが返されるはずです。

于 2013-03-27T20:41:17.587 に答える
0

SDK を使用するときに不要な curl オプションを設定します。

ここにもいくつかのドキュメントがあります。

https://github.com/mptre/php-soundcloud

于 2013-04-24T15:50:10.550 に答える