在我的应用程序中,我想将Soundcloud API与我自己的Soundcloud用户一起使用。 Soundcloud API身份验证过程涉及将用户重定向到Soundcloud主页,登录并授权应用程序,以便该页面可以为该用户使用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
答案 0 :(得分: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 ['code']值。但奇怪的是没有任何东西 $ _GET ['code']这是空白的。 Soundcloud正在回归“The 请求的URL响应HTTP代码0“错误。那次我是 在WAMP Localhost上测试Soundcloud。
Allot of Goggling我找到了一个解决方案来修复“请求的URL” 回复HTTP代码0“问题。我已下载'cacert.pem'文件 并放入我们的演示项目文件夹(在Services / Soundcloud /中)。 然后我在'class 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);
已保存“class Services_Soundcloud”文件,并在实时服务器上移动。后 将我的项目从WAMP移动到Live服务器我开始再次检查它。 当我打开index.php时,它要求我登录
I use my Facebook account to login.
after login it was asking to connect with Soundcloud
连接所有工作顺利后,我得到了
的信息
$me = json_decode($soundcloud->get('me'));
但是一个新问题开始出现,那是我的访问令牌 一次又一次地到期。然后我使用session: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干杯战斗! :)
答案 1 :(得分:1)
我正在寻找相同的东西,但是根据soundcloud's api(检查在没有SoundCloud Connect屏幕的情况下进行身份验证段落):
// this example is not supported by the PHP SDK
..并且Javascript也不支持。
我尝试使用python进行身份验证:
# 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')
..然后上传python方法:
# upload audio file
track = client.post('/tracks', track={
'title': 'This is my sound',
'asset_data': open('file.mp3', 'rb')
})
它运作得很好。
所以,目前,您有两种方式:
答案 2 :(得分:0)
在Python和Ruby SDK中实现它并没有什么神奇之处。
发生的事情是POST
请求被发送到http://api.soundcloud.com/oauth2/token
并带有以下参数:
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