【问题标题】:Check if user still has the app connected to their SoundCloud account?检查用户是否仍然将应用程序连接到他们的 SoundCloud 帐户?
【发布时间】: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


    【解决方案1】:

    通过进入 SoundCloud 的 PHP 库中的 SoundCloud.php 文件并替换代码来解决它

    throw new Services_Soundcloud_Invalid_Http_Response_Code_Exception( .... );
    

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

    有点不稳定,因为它会删除条目而不考虑异常,但它可以工作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      相关资源
      最近更新 更多