如何集成到 PHP 中的 TeamUp API 日历?

How do I integrate to TeamUp API Calendar in PHP?

按照此处的文档 http://apidocs.teamup.com/ 我已经通过 composer require 'guzzlehttp/guzzle:^6.0' 安装了 Guzzle 库...然后我生成了一个 API 密钥。

根据他们提供的示例代码,我尝试了查询组队API:

<?php
$client = new GuzzleHttp\Client(['headers' => ['Teamup-Token' => 'API KEY ']]);
$res = $client->get('https://api.teamup.com/ks73ad7816e7a61b3a/subcalendars');

echo $res->getStatusCode();
// "200"

echo $res->getHeader('content-type');
// 'application/json'

echo $res->getBody();
// {"subcalendars":[ ... ]}
?>

但是当我在浏览器上运行同样的时候却得不到任何响应。 但是,当我 运行 终端上的 curl 版本

curl "https://api.teamup.com/ks73ad7816e7a61b3a/subcalendars" 
-H "Teamup-Token: API KEY" 

我收到了预期的回复。

第二次 正在测试您的 API 密钥

我试过这个:

<?php
$client = new GuzzleHttp\Client(['headers' => ['Teamup-Token' => 'API_KEY']]);
$res = $client->get('https://api.teamup.com/check-access');

if ($res->isSuccessful()) {
    echo 'Your API key works!';
} else {
    echo 'API key test failed: ' . $res->getBody();
}
?>

没有响应,但 curl 版本:

curl "https://api.teamup.com/ks73ad7816e7a61b3a/subcalendars" 
-H "Teamup-Token: API_KEY"

有 json 格式的响应。显然我似乎做错了什么。会是什么呢?任何人? 谢谢你。

看来我找到了解决问题的方法。 为了任何曾经或将要面临同样问题的人,这是我的解决方法。

  1. 创建由网络服务器提供的测试文件

  2. 打开命令 window 并切换到该目录

  3. 执行"composer install"。这将安装所需的 Guzzle 库。 (假设您的开发机器上安装了 php 包管理器 Composer。)

  4. 从网络浏览器访问 php 脚本。

你一定会得到回应。

<?php

include 'vendor/autoload.php';

define('API_KEY', 'Your_API_KEY');

/**
 * Check API access
 */

$client = new GuzzleHttp\Client([
    'headers' => ['Teamup-Token' => API_KEY], 
    // use verify = false in test mode only if you do not have a CA bundle 
    // properly configured, but this should generally not be needed
    'verify' => true,
]);
$res = $client->get('https://api.teamup.com/check-access');

echo $res->getStatusCode();
// "200"

echo "<br /><br />";
echo $res->getHeader('content-type')[0];
// "application/json"

echo "<br /><br />";
echo '<strong>Response body</strong>';
// The (string) cast is needed to convert the body to a string, see 
$rawResponse = (string) $res->getBody();
echo '<pre>' . $rawResponse . '</pre>';

echo "<br /><br />";
echo '<strong>Formatted response body</strong>';
$json_string = json_encode(json_decode($rawResponse), JSON_PRETTY_PRINT);
echo '<pre>' . $json_string . '</pre>';

应该可以!