【问题标题】:Trouble with SpringPad APISpringPad API 出现问题
【发布时间】:2011-05-28 00:34:34
【问题描述】:

我正在尝试使用 Springpad API 访问日期。

如果我使用以下链接:

http://springpadit.com/api/blocks/all?limit=1&text=HARRY+POTTER

我可以通过搜索词“J K Rowlings”获得 2 个最近的结果。

在授权我的服务器后,我编写了以下代码来做同样的事情:

$api_url = "http://springpadit.com/api/";
$query = $_GET['query'];
$param = array('limit'=>1, 'text'=>$query);
$temp = http_build_query($param,"","&");
$url = $api_url."blocks/all?".$temp;

session_start();

// In state=1 the next request should include an oauth_token.
// If it doesn't go back to 0
if(!isset($_GET['oauth_token']) && $_SESSION['state']==1) $_SESSION['state'] = 0;
try {
  $oauth = new OAuth($conskey,$conssec,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);
  $oauth->enableDebug();
  if(!isset($_GET['oauth_token']) && !$_SESSION['state']) {
    $request_token_info = $oauth->getRequestToken($req_url);
    $_SESSION['secret'] = $request_token_info['oauth_token_secret'];
    $_SESSION['state'] = 1;
    header('Location: '.$authurl.'?oauth_token='.$request_token_info['oauth_token'].'&oauth_token_secret='.$_SESSION['secret']);
    exit;
  } else if($_SESSION['state']==1) {
    $oauth->setToken($_GET['oauth_token'],$_SESSION['secret']);
    $access_token_info = $oauth->getAccessToken($acc_url);
    $_SESSION['state'] = 2;
    $_SESSION['token'] = $access_token_info['oauth_token'];
    $_SESSION['secret'] = $access_token_info['oauth_token_secret'];
  } 
  $oauth->setToken($_SESSION['token'],$_SESSION['secret']);
  $oauth->fetch($url);
  $json = json_decode($oauth->getLastResponse(),true);
  print_r($json['blocks']);
} catch(OAuthException $E) {
  print_r($E);
}

这应该让您可以使用以下链接创建相同的查询并检索数据:

http://xrefpro.com/CRM/index.php?query=HARRY+POTTER

我得到的只是我的结果的一个空数组。我在这里做错了什么??

【问题讨论】:

  • 什么是 var_dump($oauth->getLastResponse());给你?
  • @kyle-hudson 它给了我 string(15) "{ "blocks":[] }"
  • 好吧,这表明 springpadit 没有返回任何内容。
  • 我明白这一点。我可以让它与他们 API 的其他部分一起工作,但是在使用他们的过滤器时遇到很多问题。如果您直接转到Link that is created,则它会输出该块。我似乎无法弄清楚我在代码中做错了什么以通过 fetch 获得相同的输出。

标签: php api oauth


【解决方案1】:

springpad api 调用“/api/blocks/all”是对所有用户公共数据的全局搜索。它不需要身份验证。如果您已登录,该 api 似乎确实存在一个错误,导致该搜索无法正常工作。您可以通过注销 springpad 并点击

来测试这一点
http://springpadit.com/api/blocks/all

然后登录后再试一下。

我想正在发生的事情是它试图在您自己的帐户中找到包含该文本的块。我是 springpadit.com 的一名员工,我们将研究通过全局查询修复该错误。不过现在,不要为全局查询使用 oauth。

如果你想搜索自己的账号,使用oauth并查询

http://springpadit.com/api/users/me/blocks?limit=1&text=Thor

响应不会有“块”节点,所以只需将打印更改为

print_r($json);

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多