2017-06-10 10 views
5

मैं डिस्कॉर्ड के भीतर चैनलों को oauth approach of adding webhooks का उपयोग करने का प्रयास कर रहा हूं। वर्कफ़्लो यह है कि उपयोगकर्ता OAuth का उपयोग करके मेरे एप्लिकेशन के साथ प्रमाणित करता है। तब मैं उन्हें रीडायरेक्ट:वेबहूक ओएथ - मैं एक्सेस टोकन के लिए वेबहुक प्रमाणीकरण कोड का आदान-प्रदान कैसे करूं?

ApiClient::API_URL.'/oauth2/authorize?client_id='.Discord::appKey().'&scope=webhook.incoming&redirect_uri='.urlencode($webhookCallback->callbackUrl()).'&response_type=code'); 

रीडायरेक्ट URL काम करता है क्योंकि यह OAuth'd उपयोगकर्ता एक सर्वर/चैनल चयन करने की अनुमति देता है।

जब आप पहुँच टोकन के प्राधिकरण कोड का आदान-प्रदान, टोकन प्रतिक्रिया webhook वस्तु में शामिल होंगे:

मैं एक पहुँच टोकन में प्राधिकरण कोड बदलने की कोशिश करने के लिए निम्न अनुरोध उपयोग कर रहा हूँ कोई भाग्य के साथ:

$client = new Client(); 
    $response = $client->post('https://discordapp.com/api/oauth2/token', [ 
     'headers' => [ 
      'Accept' => 'application/json' 
     ], 
     'form_params' => [ 
      'grant_type' => 'authorization_code', 
      'client_id' => env('DISCORD_APP_KEY'), 
      'client_secret' => env('DISCORD_APP_SECRET'), 
      'redirect_uri' => url('/discord/webhook-authorized'), 
      'code' => $request->get('code') 
     ], 
    ]); 

प्रतिक्रिया मैं एपीआई से मिलता है:

Client error: `POST https://discordapp.com/api/oauth2/token` resulted in a `401 UNAUTHORIZED` response: 
{"error": "access_denied"} 

इस अनुरोध को पूरा करने के लिए मुझे किस अनुदान प्रकार की आवश्यकता है?

+1

होने के लिए यह वास्तव में मतलब यह नहीं है कि आप गलत 'grant_type' है की जरूरत है, तो इसका मतलब है अपने कोड अमान्य है या अपने पुनर्निर्देशन यूआरआई कोड से मेल नहीं खाता । (https://tools.ietf.org/html/rfc6749#section-5.2 देखें) –

+0

@ पीटर जी यह समझ में आता है। मैं ओथ उपयोग के समान यूआरएल मार रहा हूं, इसलिए यह हो सकता है कि मुझे एक अलग यूआरएल मारा जाए। दस्तावेज़ इस पर बहुत स्पष्ट नहीं हैं। – Webnet

उत्तर

4

'grant_type' => 'authorization_code',

'grant_type' => 'client_credentials',

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