2012-01-03 11 views
5

मेरे आवेदन में मैं अपने स्वयं के साउंडक्लाउड उपयोगकर्ता के साथ साउंडक्लाउड एपीआई का उपयोग करना चाहता हूं। साउंडक्लाउड एपीआई प्रमाणीकरण प्रक्रिया में उपयोगकर्ता को साउंडक्लाउड होमपेज पर रीडायरेक्ट किया जा रहा है, एप्लिकेशन को लॉगिन और अधिकृत करें, ताकि पृष्ठ इस उपयोगकर्ता के लिए एपीआई का उपयोग कर सके।स्वचालित साउंडक्लाउड PHP एपीआई प्रमाणीकरण उपयोगकर्ता इंटरैक्शन के बिना

मैं पूरी प्रक्रिया को स्वचालित करना चाहता हूं, क्योंकि मेरा स्वयं का उपयोगकर्ता ही एकमात्र उपयोगकर्ता है जो प्रमाणीकृत हो जाता है। क्या यह संभव है?

यहाँ मेरी कोड अब तक है:

$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 के अनुसार (जाँच ध्वनि क्लाउड कनेक्ट स्क्रीन के बिना प्रमाणीकरण अनुच्छेद):

// this example is not supported by the PHP SDK 

.. और जावास्क्रिप्ट द्वारा समर्थित नहीं है और न ही।

मैं अजगर के साथ प्रमाणन के लिए 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. अन्य भाषा, पायथन या रूबी (केवल 2 एसडीके है कि वास्तव में इस सुविधा का समर्थन) का प्रयोग करें या के लिए एक सेतु के रूप में एक छोटे से अजगर/रूबी स्क्रिप्ट का उपयोग यह विशेष आवश्यकता है;
  2. पीएचपी एसडीके को यह funcionaliy जोड़ें (मैं इसे quick'n'dirty ऐसा करने के लिए, अगर मैं सफलता पाने के लिए, मैं साझा करेंगे कोशिश कर रहा हूँ;)
+0

मैं Strae से सहमत हूँ:

यहाँ डाकिया डॉक्टर मैं प्रदर्शन के लिए बनाया गया है। PHP एसडीके पूरी तरह से काम नहीं करता है। जब हम टोकन तक पहुंचने का प्रयास कर रहे हैं तो यह 401 त्रुटि फेंक रहा है। –

+0

मुझे कहना है कि मैं इस कार्यक्षमता को php एसडीके – Strae

4

हाय सभी,

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: 
: यहाँ मैं Soundcloud एपीआई के साथ मेरा अनुभव साझा करने के लिए जा रहा हूँ (पीएचपी)

मेरे प्रश्न देखें

// 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'] में कुछ भी नहीं है यह खाली है। साउंडक्लाउड " अनुरोधित यूआरएल HTTP कोड 0" त्रुटि के साथ प्रतिक्रिया दे रहा था। उस समय मैं WAMP लोकलहोस्ट पर ध्वनि ध्वनि का परीक्षण कर रहा था।

गोगलिंग के आवंटन मुझे "अनुरोधित यूआरएल HTTP कोड 0" के साथ जवाब देने का समाधान मिला। मैंने 'cacert.pem' फ़ाइल डाउनलोड की थी और हमारे डेमो प्रोजेक्ट फ़ोल्डर (सेवाओं/ध्वनि क्लाउड/अंदर) के अंदर रखा था। तब मैं 'वर्ग 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 से लाइव सर्वर पर ले जाएं, मैं इसे फिर से जांचना शुरू कर देता हूं। जब मैं अपने 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')); 

साथ मेरी जानकारी मिल गया लेकिन एक नई समस्या उत्पन्न हो रही शुरू करने के लिए जो था कि मेरी पहुँच टोकन बार-बार समय सीमा समाप्त हो जा रहा है। भयानक काम कर डी

// 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()); 
} 

और अब सब कुछ: तो मैं सत्र का उपयोग करें। मैं अपने सभी विवरण प्राप्त कर सकता हूं, एससी सर्वर

से सबकुछ ट्रैक करता है आशा है कि यह आपको ध्वनि क्लाउड एपीआई चीयर्स से लड़ने में मदद करेगा !!!! :)

+0

में जोड़ने में असफल रहा हाय नमस्ते कृपया मेरा उत्तर जांचें और कृपया मुझे बताएं कि यह आपके लिए काम करता है या नहीं। –

0

पायथन और रूबी एसडीके में इसके कार्यान्वयन के पीछे कोई जादू नहीं है। बात ये है कि 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

संबंधित मुद्दे