2012-01-03 107 views
5

在我的应用程序中,我想用我自己的Soundcloud用户使用Soundcloud API。 Soundcloud API身份验证过程涉及将用户重定向到Soundcloud主页,登录并授权应用程序,以便该页面可以为该用户使用API​​。没有用户交互的自动Soundcloud PHP Api身份验证

我想让整个过程自动化,因为我自己的用户是获得认证的唯一用户。那可能吗?

这是到目前为止我的代码:

$soundcloud = new \Services_Soundcloud(
     '**', 
     '**', 
     'http://**' 
    ); 

    $authorizeUrl = $soundcloud->getAuthorizeUrl(); 

    $accessToken = $soundcloud->accessToken(); 

    try { 
     $me = json_decode($soundcloud->get('me'), true); 
    } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { 
     exit($e->getMessage()); 
    } 

但行$accessToken = $soundcloud->accessToken();抛出异常:

The requested URL responded with HTTP code 401. 
500 Internal Server Error - Services_Soundcloud_Invalid_Http_Response_Code_Exception 

回答

1

我在寻找同样的事情,但根据soundcloud's api(检查验证没有SoundCloud Connect Screen段落):

// this example is not supported by the PHP SDK 

..并且不支持Javascript。

我tryed与蟒蛇权威性:

# create client object with app and user credentials 
client = soundcloud.Client(client_id='YOUR_CLIENT_ID', 
          client_secret='YOUR_CLIENT_SECRET', 
          username='YOUR_USERNAME', 
          password='YOUR_PASSWORD') 

..then上传蟒蛇方法:

# upload audio file 
track = client.post('/tracks', track={ 
    'title': 'This is my sound', 
    'asset_data': open('file.mp3', 'rb') 
}) 

和它工作得很好。

所以,现在,你有2种方式:

  1. 使用另一种语言,Python或Ruby(只有2 SDK,实际上支持此功能),或使用一个小的Python/Ruby脚本作为一个桥梁这个特殊的需要;
  2. 添加此funcionaliy到PHP SDK(我试图做到这一点quick'n'dirty,如果我得到的成功,我将分享;)
+0

我与Strae同意。 PHP SDK不能很好地工作。它抛出401错误,当我们正试图获得访问令牌。 – 2013-01-31 13:58:56

+0

我必须说,我没能在PHP SDK – Strae 2013-02-01 08:07:33

4

大家好,

在这里,我要分享我的SoundCloud与经验的API(PHP)

见我的问题:Link

Recently I started to work with Sound cloud API (PHP) and I decided to use PHP API by 

https://github.com/mptre/php-soundcloud. 

But When I was trying to get access token from Sound cloud server by this code: 
// Get access token 
try { 
    $accessToken = $soundcloud->accessToken($_GET['code']); 
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { 
    exit($e->getMessage()); 
} 

我检查$ _GET [ '代码']值。但奇怪的是, $ _GET ['code']这是空白的。 Soundcloud返回“ 请求的URL以HTTP代码0响应”错误。那次我在WAMP Localhost上测试Soundcloud的 。

护目镜的分配我发现了一个解决方案修复“请求的URL 回应与HTTP代码0”的问题。我已经下载了'cacert.pem'文件 并放入我们的演示项目文件夹(在Services/Soundcloud /里面)。 后来我一加入“类Services_Soundcloud”

function protected function _request($url, $curlOptions = array()). 
// My code in side function 
$curlPath = realpath(getcwd().'\Services\cacert.pem');   
$curlSSLSertificate = str_replace("\\", DIRECTORY_SEPARATOR, $curlPath);   
curl_setopt($ch, CURLOPT_CAINFO, $curlSSLSertificate); 

保存的“类Services_Soundcloud”文件中的一些代码和移动活的服务器上。在 将我的项目从WAMP移到Live服务器后,我开始再次检查它。 当我打开我的index.php这是问我要登录

enter image description here

I use my Facebook account to login. 

enter image description here

after login it was asking to connect with Soundcloud 

enter image description here

连接后一切工作顺利,我得到了我的信息与

$me = json_decode($soundcloud->get('me')); 

,但一个新的问题开始出现的这是我的访问令牌 被一次又一次地到期。然后我使用会话:d

// code for access token 
$code = $_GET['code']; 
// Get access token 
try { 
    if(!isset($_SESSION['token'])){ 
     $accessToken = $soundcloud->accessToken($code); 
     $_SESSION['token'] = $accessToken['access_token']; 
    }else{ 
     $soundcloud->setAccessToken($_SESSION['token']); 
    } 
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { 
    exit($e->getMessage()); 
} 

而现在一切工作真棒。我可以让我的所有细节,跟踪一切从SC服务器

希望这将有助于你的SoundCloud与API干杯打!!!! :)

+0

添加此功能嗨阿尔普请检查我的答案,请让我知道,如果它是为你工作。 – 2013-02-05 07:10:35

0

有它的Python实现和Ruby SDK的背后没有魔法。 发生了什么事是POST请求被发送到http://api.soundcloud.com/oauth2/token具有以下PARAMS:

client_id='YOUR_CLIENT_ID' 
    client_secret='YOUR_CLIENT_SECRET' 
    username='YOUR_USERNAME' 
    password='YOUR_PASSWORD' 

而且Content-Type: application/x-www-form-urlencoded

响应正文包含access_token,可用于您的要求的进一步授权。因此,您的GET要求/me端点的样子:/me?oauth_token=YOUR_ACCESS_TOKEN&client_id=YOUR_CLIENT_ID。 (我相信,client_id是多余这里,但他们的应用继续增加的话)。

这里是邮差文件我为示范创建:https://documenter.getpostman.com/view/3651572/soundcloud/7TT5oD9