2017-06-10 3 views
5

Ich versuche, die oauth approach of adding webhooks Kanäle in Discord zu verwenden. Der Workflow besteht darin, dass sich ein Benutzer mit meiner Anwendung über OAuth authentifiziert. Dann leite ich sie an:Webhook OAuth - Wie kann ich einen Webhook-Autorisierungscode für ein Zugriffstoken austauschen?

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

Die Umleitungs-URL funktioniert, weil es erlaubt es der OAuth'd Benutzer einen Server/Kanal zu wählen.

Wenn Sie den Autorisierungscode für ein Zugriffstoken auszutauschen, wird die Token Antwort das Webhook Objekt enthält:

ich folgende Anfrage bin zu versuchen, den Autorisierungscode in ein Zugriffstoken zu konvertieren ohne Glück:

$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') 
     ], 
    ]); 

die Antwort, die ich von der API erhalten ist:

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

Welchen Grant-Typ benötige ich, um diese Anfrage zu beantworten?

+1

dies tatsächlich sein bedeutet nicht, dass Sie die falsche 'grant_type' haben, bedeutet dies, Ihr Code ist ungültig oder Ihre Umleitung URI nicht mit dem Code . (Siehe https://tools.ietf.org/html/rfc6749#section-5.2) –

+0

@PeterG Das macht Sinn. Ich treffe dieselbe URL wie der oauth verwendet, also könnte es sein, dass ich eine andere URL drücken muss. Die Dokumente sind diesbezüglich nicht sehr klar. – Webnet

Antwort

4

'grant_type' => 'authorization_code',

benötigt

'grant_type' => 'client_credentials',

Verwandte Themen