2017-06-10 14 views
5

私はoauth approach of adding webhooksをDiscord内のチャンネルに使用しようとしています。ワークフローは、ユーザーがOAuthを使用してアプリケーションで認証することです。それはOAuth'dのユーザがサーバ/チャンネルを選択することができないため、リダイレクトURLが機能Webhook OAuth - アクセストークンのWebhook認証コードを交換するにはどうすればよいですか?

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

:その後、私はそれらをリダイレクトします。私がアクセストークンに認証コードを変換しようとするには、以下の要求を使用してい

:あなたはアクセストークンのための認証コードを交換するときは、トークン応答はウェブフックオブジェクトが含まれています

運と:

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

私はAPIから取得応答は次のとおりです。

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

この申請を完了するためにどのような補助金の種類が必要ですか?

+1

これは実際にあなたが間違っ 'grant_type'を持って意味するものではありません、それはあなたのコードが無効であるか、リダイレクトURIは、コードが一致しないことを意味します。 (https://tools.ietf.org/html/rfc6749#section-5.2を参照) –

+0

@PeterGそれは理にかなっています。 oauthが使用するのと同じURLを使用しているため、別のURLにアクセスする必要があります。ドキュメントはこれについて非常に明確ではありません。 – Webnet

答えて

4

'grant_type' => 'authorization_code',

にする必要

'grant_type' => 'client_credentials',

関連する問題