检查用户是否仍然将应用程序连接到他们的SoundCloud帐户?

时间:2014-08-07 00:50:57

标签: oauth soundcloud

当用户连接到我的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()中的任何代码。

1 个答案:

答案 0 :(得分:0)

通过从SoundCloud的PHP库进入SoundCloud.php文件并替换

的代码解决了这个问题。
throw new Services_Soundcloud_Invalid_Http_Response_Code_Exception( .... );

用我的代码删除数据库条目并重新加载窗口!

有点不可思议,因为它会删除条目而不管异常,但它有效!