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

时间:2016-08-22 13:37:06

标签: php json curl guzzle

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

在他们提供的示例代码上,我尝试了查询Teamup 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 "https://api.teamup.com/ks73ad7816e7a61b3a/subcalendars" 
-H "Teamup-Token: API_KEY"

以json格式回复。显然,我似乎做错了什么。会是什么呢?任何人? 谢谢。

1 个答案:

答案 0 :(得分:1)

似乎我找到了解决问题的方法。 为了任何人或将要面对同样的人,这是我的解决方案。

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

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

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

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

  5. 你一定会得到答复。

    <?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 https://stackoverflow.com/a/30549372/6512
    $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>';
    

    那应该有用!