0

「要求された URL は HTTP コード 401 で応答しました」と表示される理由を理解したいと思います。アクセストークンで説明を入れようとすると。

奇妙なことに、ユーザーから access_token (セッション) を取得した直後にそれを行うと正常に動作しますが、トークンを保存して後で同じコードを起動しようとすると失敗します。

どうやら、トークンなしでサウンドクラウドの説明にアクセスできるため、トークンに問題がありますが、このメソッドを使用すると: $soundcloud->setAccessToken($token); トラックデータを取得する前に、もうアクセスできません...

コードは次のとおりです。

require_once 'soundcloud/Soundcloud.php';
$soundcloud = new Services_Soundcloud(SOUNDCLOUD_CLIENT_ID, SOUNDCLOUD_CLIENT_SECRET, SOUNDCLOUD_REDIRECT_URI);
$soundcloud->setAccessToken($session_token);
try
{
    $track = json_decode($soundcloud->get('tracks/'.$media_id), true);
}
catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e)
{
    exit($e->getMessage());
}
try
{
    $response = json_decode($soundcloud->put(
                                     'tracks/'.$media_id,
                                              'test',
                                               array(CURLOPT_HTTPHEADER => array('Content-Type: application/xml'))), true);
}
catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e)
{
    exit($e->getMessage());
}

このコードは、トークンを取得しただけでは機能しますが、数日後に起動すると失敗します...

手伝ってくれてありがとう !

4

2 に答える 2

1

無期限のトークンが必要です。

認証時、パラメータのscopeデフォルトは"*"です。

スコープを指定して、次のようにトークンを取得します。

$soundcloud->getAuthorizeUrl(array('scope'=>'non-expiring'))

参照: http://developers.soundcloud.com/docs/api/reference#connect

(かなり古い質問ですが、自分でこれに遭遇しました。トークンの有効期限が切れると、401 エラー以外の API からのフィードバックが得られず、暗闇の中に残ります。)

于 2014-04-01T19:27:28.470 に答える
1

この例の $session_token はどこから来ているのでしょうか? アクセス トークンの生成方法に応じて、次の 2 つのいずれかが行われます。

  1. 正しいアクセス トークンを送信していません。
  2. 送信しているアクセス トークンの有効期限が切れています。

2 の場合、ユーザーがアプリを承認したときに更新トークンを取得しているはずです。PHP SoundCloud SDK には、このシナリオで使用できる accessTokenRefresh() メソッドがあります。

于 2012-04-24T23:34:40.807 に答える