2017-06-10 21 views
5

Tôi đang cố gắng sử dụng các kênh oauth approach of adding webhooks cho các kênh trong Âm thanh. Luồng công việc là người dùng xác thực với ứng dụng của tôi bằng OAuth. Sau đó, tôi chuyển hướng họ đến:Webhook OAuth - Làm cách nào để trao đổi mã ủy quyền webhook cho mã thông báo truy cập?

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

URL chuyển hướng hoạt động vì nó cho phép người dùng OAuth'd chọn máy chủ/kênh.

Khi bạn trao đổi mã ủy quyền cho một thẻ truy cập, phản ứng thẻ sẽ chứa các đối tượng webhook:

Tôi đang sử dụng các yêu cầu sau đây để cố gắng chuyển đổi mã quyền vào một thẻ truy cập không có may mắn:

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

Câu trả lời tôi nhận được từ các API là:

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

Tôi cần loại trợ cấp nào để hoàn thành yêu cầu này?

+1

này thực sự không có nghĩa là bạn có sai 'grant_type', nó có nghĩa là mã của bạn không hợp lệ hoặc chuyển hướng URI của bạn không phù hợp với mã . (xem https://tools.ietf.org/html/rfc6749#section-5.2) –

+0

@PeterG Điều đó có ý nghĩa. Tôi đang sử dụng cùng một URL như oauth sử dụng để có thể tôi cần phải nhấn một URL khác. Các tài liệu không rõ ràng về điều này. – Webnet

Trả lời

4

'grant_type' => 'authorization_code',

cần thiết để được

'grant_type' => 'client_credentials',

Các vấn đề liên quan