【问题标题】:Getting information using trello API PHP使用 trello API PHP 获取信息
【发布时间】:2016-12-19 15:18:27
【问题描述】:

我是 php 的初学者,我想使用服务器上的 php 脚本从我的 trello 帐户中获取一些信息(此处为 localhost --> wamp)

我使用在互联网上找到的一个简单的 php 代码向 trello api 发出一些请求。

它包含在一个 trello-api 类 (trello-api.php) 中

<?php
  class trello_api {
    private $key;
    private $secret;
    private $token;

    public function __construct ($key, $secret, $token) {
      $this->key = $key;
      $this->secret = $secret;
      $this->token = $token;
    }

    public function request ($type, $request, $args = false) {
      if (!$args) {
        $args = array();
      } elseif (!is_array($args)) {
        $args = array($args);
      }

      if (strstr($request, '?')) {
        $url = 'https://api.trello.com' . $request . '&key=' . $this->key . '&token=' . $this->token;
      } else {
        $url = 'https://api.trello.com' . $request . '?key=' . $this->key . '&token=' . $this->token;
      }

      $c = curl_init();
      curl_setopt($c, CURLOPT_HEADER, 0);
      curl_setopt($c, CURLOPT_VERBOSE, 0);
      curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($c, CURLOPT_URL, $url);

      if (count($args)) curl_setopt($c, CURLOPT_POSTFIELDS , http_build_query($args));

      switch ($type) {
        case 'POST':
          curl_setopt($c, CURLOPT_POST, 1);
          break;
        case 'GET':
          curl_setopt($c, CURLOPT_HTTPGET, 1);
          break;
        default:
          curl_setopt($c, CURLOPT_CUSTOMREQUEST, $type);
      }

      $data = curl_exec($c);
      curl_close($c);

      return json_decode($data);
    }
  }
?>

我把文件放在wamp目录下../www/trello/trello-api.php

我创建了另一个文件 index.php

<?php
require "./trello_api.php";
$key = 'my_key';
$secret = 'my_secret';
$token = 'my_token';
$trello = new trello_api($key, $secret, $token);

$data = $trello->request('GET', ('1/boards/'));

echo $data;

?>

$data 变量为空,而不是返回带有板列表的 json 文件

有人知道如何使这段代码工作吗?

【问题讨论】:

标签: php trello


【解决方案1】:

$secret 未在您的 trello_api 类中使用,可以删除。 API URL 格式不正确,因为域和路径之间没有斜线。我还向 CURL 添加了 CURLOPT_CAINFO 选项,因为 API 使用的是 HTTPS 协议。

我的 trello-api.php:

<?php

class trello_api
{
    private $key;
    private $token;

    public function __construct($key, $token)
    {
        $this->key = $key;
        $this->token = $token;
    }

    public function request($type, $request, $args = false)
    {
        if (!$args) {
            $args = array();
        } elseif (!is_array($args)) {
            $args = array($args);
        }

        if (strstr($request, '?')) {
            $url = 'https://api.trello.com/1/' . $request . '&key=' . $this->key . '&token=' . $this->token;
        } else {
            $url = 'https://api.trello.com/1/' . $request . '?key=' . $this->key . '&token=' . $this->token;
        }

        $c = curl_init();
        curl_setopt($c, CURLOPT_HEADER, 0);
        curl_setopt($c, CURLOPT_VERBOSE, 0);
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($c, CURLOPT_URL, $url);
        curl_setopt($c, CURLOPT_CAINFO, dirname(__FILE__) .  '/trello.com.crt');

        if (count($args)) curl_setopt($c, CURLOPT_POSTFIELDS, http_build_query($args));

        switch ($type) {
            case 'POST':
                curl_setopt($c, CURLOPT_POST, 1);
                break;
            case 'GET':
                curl_setopt($c, CURLOPT_HTTPGET, 1);
                break;
            default:
                curl_setopt($c, CURLOPT_CUSTOMREQUEST, $type);
        }

        $data = curl_exec($c);
        echo curl_error($c);
        curl_close($c);

        return json_decode($data);
    }
}

/trello.com.crt 是在 Trello API URL 上从 FireFox 导出的证书文件。

我的 index.php:

<?php
require "./trello-api.php";
$key = 'key';
$token = 'token';
$trello = new trello_api($key, $token);

$data = $trello->request('GET', ('member/me/boards'));

echo '<pre>';
print_r($data);
echo '</pre>';

API 响应示例:

Array
(
    [0] => stdClass Object
        (
            [name] => TESt
            [desc] => 
            [descData] => 
            [closed] => 
            [idOrganization] => 
            [pinned] => 
            [invitations] => 
            [shortLink] => sqzLZoin
            [powerUps] => Array
                (
                )

            [dateLastActivity] => 
            [idTags] => Array
                (
                )

            [id] => 57adee08e0ba2754693cc3de
            [invited] => 
            [starred] => 
            [url] => https://trello.com/b/sqzLZoin/test
            [prefs] => stdClass Object
                (
                    [permissionLevel] => private
                    [voting] => disabled
                    [comments] => members
                    [invitations] => members
                    [selfJoin] => 
                    [cardCovers] => 1
                    [cardAging] => regular
                    [calendarFeedEnabled] => 
                    [background] => blue
                    [backgroundImage] => 
                    [backgroundImageScaled] => 
                    [backgroundTile] => 
                    [backgroundBrightness] => dark
                    [backgroundColor] => #0079BF
                    [canBePublic] => 1
                    [canBeOrg] => 1
                    [canBePrivate] => 1
                    [canInvite] => 1
                )

            [memberships] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 57adee08e0ba2754693cc3df
                            [idMember] => 57adedff402470436a70280b
                            [memberType] => admin
                            [unconfirmed] => 
                            [deactivated] => 
                        )

                )

            [subscribed] => 
            [labelNames] => stdClass Object
                (
                    [green] => 
                    [yellow] => 
                    [orange] => 
                    [red] => 
                    [purple] => 
                    [blue] => 
                    [sky] => 
                    [lime] => 
                    [pink] => 
                    [black] => 
                )

            [dateLastView] => 2016-08-12T15:41:11.371Z
            [shortUrl] => https://trello.com/b/sqzLZoin
        )

    [1] => stdClass Object
        (
            [name] => Добро пожаловать на доску
            [desc] => 
            [descData] => 
            [closed] => 
            [idOrganization] => 
            [pinned] => 
            [invitations] => 
            [shortLink] => huMmEapC
            [powerUps] => Array
                (
                )

            [dateLastActivity] => 2016-08-12T15:40:47.911Z
            [idTags] => Array
                (
                )

            [id] => 57adedff402470436a702811
            [invited] => 
            [starred] => 
            [url] => https://trello.com/b/huMmEapC/-
            [prefs] => stdClass Object
                (
                    [permissionLevel] => private
                    [voting] => disabled
                    [comments] => members
                    [invitations] => members
                    [selfJoin] => 1
                    [cardCovers] => 1
                    [calendarFeedEnabled] => 
                    [background] => blue
                    [backgroundImage] => 
                    [backgroundImageScaled] => 
                    [backgroundTile] => 
                    [backgroundBrightness] => dark
                    [backgroundColor] => #0079BF
                    [canBePublic] => 1
                    [canBeOrg] => 1
                    [canBePrivate] => 1
                    [canInvite] => 1
                )

            [memberships] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 57adedff402470436a702815
                            [idMember] => 4e6a7fad05d98b02ba00845c
                            [memberType] => normal
                            [unconfirmed] => 
                            [deactivated] => 
                        )

                    [1] => stdClass Object
                        (
                            [id] => 57adedff402470436a702816
                            [idMember] => 57adedff402470436a70280b
                            [memberType] => admin
                            [unconfirmed] => 
                            [deactivated] => 
                        )

                )

            [subscribed] => 
            [labelNames] => stdClass Object
                (
                    [green] => 
                    [yellow] => 
                    [orange] => 
                    [red] => 
                    [purple] => 
                    [blue] => 
                    [sky] => 
                    [lime] => 
                    [pink] => 
                    [black] => 
                )

            [shortUrl] => https://trello.com/b/huMmEapC
        )

)

【讨论】:

  • 谢谢!只有一个问题,如何从 trello url 导出 /trello.com.crt 证书文件?因为我有以下错误:“错误设置证书验证位置:CAfile:C:\wamp64\www\trello_new/trello.com.crt CApath:无”
  • 我在FF打开api.trello.com/1,点击URL左侧绿色锁标志,然后打开详情,点击查看证书,详情选项卡,导出为证书链crt/pem。跨度>
  • 非常感谢!它终于起作用了!你是老板
猜你喜欢
  • 2014-12-20
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 2016-01-09
  • 2018-04-10
相关资源
最近更新 更多