如何在 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_token
。 grant_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)
我一直致力于为学生提供在线教育的 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_token
。 grant_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)