当用户连接到我的SoundCloud网络应用程序然后通过其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()中的任何代码。
答案 0 :(得分:0)
通过从SoundCloud的PHP库进入SoundCloud.php文件并替换
的代码解决了这个问题。throw new Services_Soundcloud_Invalid_Http_Response_Code_Exception( .... );
用我的代码删除数据库条目并重新加载窗口!
有点不可思议,因为它会删除条目而不管异常,但它有效!