如何在 Laravel 中配置 API 密钥和 API 秘密?

How to configure API key & API secret in Laravel?

我一直致力于为学生提供在线教育的 Laravel 项目。我想使用视频会议的 Zoom 服务,以便老师可以通过视频会议与学生联系。根据 API 参考文档,我已经使用 Zoom 注册了一个应用程序。我按照文档获得了 API 密钥和 API 秘密以及访问令牌。

我正在从 Zoom 向 post/fetch 数据发送后续请求,但我一直收到这样的错误消息:

Client error: `POST https://api.zoom.us/v2/accounts` resulted in a `400 Bad Request` response: {"code":200,"message":"Invalid api key or secret."}  

我在 header 中发送 API 密钥和 API 密钥,但仍然出现相同的错误。可能是我在请求过程中做错了什么,或者可能是其他原因,我不知道。我在互联网上搜索了如何将 Zoom 与 Laravel 应用程序集成,但找不到任何有用的信息。

谁能帮我弄清楚我做错了什么?有人可以为我提供一些有关 Zoom API 与 Laravel 集成的有用资源吗?

class AccountsController extends Controller
{
    public function createAccount(Request $request) {

        $client_id = env('CLIENT_ID');
        $client_secret = env('CLIENT_SECRET');

        $content = "grant_type=client_credentials&client_id=$client_id&client_secret=$client_secret";
        $token_url="https://zoom.us/oauth/token";

        $curl = curl_init();

        curl_setopt_array($curl, array(

            CURLOPT_URL => $token_url,
            CURLOPT_SSL_VERIFYPEER => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $content
        ));

        $data = curl_exec($curl);
        curl_close($curl);
        $result = json_decode($data);

        $access_token = $result->access_token;
        $client = new \GuzzleHttp\Client();

        $api_key = env('API_KEY');
        $api_secret = env('API_SECRET');

        $response = $client->request('POST', 'https://api.zoom.us/v2/accounts', [
            'headers' => [
                'apikey' => $api_key,
                'apisecret' => $api_secret,
                'Accept' => 'application/json',
                'Content-Type' => 'application/json',
                'Authorization'     => 'Bearer '. $access_token
            ],
            'form_params' => [
                'first_name' => $request->first_name,
                'last_name' => $request->last_name,
                'email' => $request->email,
                'password' => $request->password,
            ],
        ]);
        $response = $response->getBody()->getContents();
        dd($response);
    }
}

这是针对此 API 调用的 json 响应:

{
  "id": "string",
  "owner_id": "string",
  "owner_email": "string",
  "created_at": "string"
}

我注意到您正在尝试使用:grant_type=client_credentials 来获得 access_tokengrant_type=client_credentials 仅适用于 getting Chatbot tokens.

call the Zoom APIs via the OAuth App Type,您必须使用:grant_type=code 以获得 access_token

对于服务器到服务器的集成,您可以使用 JWT App Type 调用 Zoom API。

有关 Zoom App Types here 的更多详细信息。

(提问者移至 Zoom 开发者论坛:https://devforum.zoom.us/t/invalid-api-key-or-secret-error