1

聖霊降臨祭のphp-soundcloudをテストします

スクリプトphp- soundcloud(Oauth 2)を使用しようとしましたが、ユーザーのログイン後に問題が発生しました。
私はチュートリアルウィキを正確に実行します:https ://github.com/mptre/php-soundcloud/wiki/Oauth-2

ユーザーがアプリケーションを受け入れると、次のURLが返されます。http://mywebsite.com/?code=123456789123456789

正解です$_GET['code']が、関数accessToken()は情報を取得しません。HTTPコード401エラーが発生します(下の図を参照)。

HTTPコード401soundcloud

これが私のコードです(最も基本的なものです):

<?php

include 'Services/Soundcloud.php';
$soundcloud = new Services_Soundcloud('_myClientId_', '_ClientSecret_', '_RedirectUri_');

echo '<a href="' . $soundcloud->getAuthorizeUrl() . '">Connect with SoundCloud</a><br />';

try {
    $accessToken = $soundcloud2->accessToken($_GET['code']);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
    exit($e->getMessage());
}

これがsoundcloudのHTTPステータスコードです:http://developers.soundcloud.com/docs/api/guide#errors
彼らはコード401が次のようになっていると言います:あなたが私たちにclient_idまたはを送っていることを確認してくださいaccess_token
しかし、私は正しいIDとトークンを送信するのは確実です!:/

誰かがすでにSoundCloudAPIを操作していて、なぜこのエラーが発生するのかを知っている場合は、解決策を教えてください。

4

2 に答える 2

1

わかりました、見つけました!とても簡単です...トークンをクラスに追加する
関数を見たことがありませんでしたsetAccessToken()

try {
    $accessToken = $soundcloud2->accessToken($_GET['code']);
    // this is the part that I was missing
    $soundcloud2->setAccessToken($accessToken["access_token"]);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
    exit($e->getMessage());
}
于 2012-08-24T07:44:12.117 に答える
0

atmon3rの答えは確かに間違っています。accessToken()の呼び出しはすでにアクセストークンを設定しているため、setAccessToken()の呼び出しは完全に不要です。また、accessToken()を呼び出すときに例外が発生していたため、例外を発行したコードのに​​コード行を追加して修正することはできません。

同じエラーが発生しました。私の場合は、3番目の(redirect_uri)パラメーターを指定せずにServices_Soundcloudコンストラクターを呼び出したことが原因でした。このパラメーターを追加すると(完全に役に立たないため、そもそも必要ではないはずですが、SoundCloud APIはひどく設計されています)、(setAccessTokenを呼び出す必要なしに)機能しました。

APIが誤解されていることに加えて(アプリケーションで構成された1つの固定リターンURLのみを許可し[すでにそれ自体が愚かで壊滅的な制限]であると同時に、パラメーターとしてそれを必要とします[有効なものが1つしかない場合value])、PHPライブラリには欠陥があり、必要な3番目のパラメータなしでコンストラクタを呼び出しても例外がスローされません。

return_urlの値は、アプリケーションで構成されている値と一致する必要があることに注意してください。

于 2015-04-12T20:23:46.557 に答える