【发布时间】:2014-08-07 00:50:56
【问题描述】:
当用户连接到我的 SoundCloud Web 应用,然后通过他们的 SoundCloud 设置断开连接时,我的应用停止工作并返回 401 错误:
错误代码 500
请求的 URL 以 HTTP 代码 401 响应。
我正在使用 SoundCloud PHP 库。
目前在连接时,我将用户的 Soundcloud 用户 ID 保存到会话和数据库中,并将 oauth 令牌和密码保存到数据库中。
当用户从他们的 SoundCloud 设置中断开应用程序后,在我的网站上点击 Connect 时会发生以下情况:
代码检查用户的 SoundCloud ID 并尝试使用保存在数据库中的 OAuth 凭据进行身份验证。
由于用户与应用断开连接,OAuth 凭据不再起作用并返回拒绝访问错误。
我正在寻找一种方法来检测此错误并删除包含不再工作的 OAuth 令牌的数据库条目,以允许用户正确重新连接。
我尝试了以下代码:
$result = User::model()->findByAttributes(array("oauth_uid"=>$_SESSION['scid']));
//If result is empty create login URL
if(empty($result)){
$sc_auth = false;
$scloginurl = $client->getAuthorizeUrl(array("scope"=>"non-expiring"));
//Else if result is found, try setting the access token, if access token returns errors get login URL
}else{
try{
$client->setAccessToken($result['oauth_token']);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e){
$scloginurl = $client->getAuthorizeUrl(array("scope"=>"non-expiring"));
$sc_auth = false;
$error = 1;
}
正如您在上面看到的,我尝试使用“try() catch()”来查看设置访问令牌是否有任何错误,但是该网站似乎返回了相同的错误并且没有执行 catch 中的任何代码()。
【问题讨论】:
标签: oauth soundcloud