【发布时间】: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 获得相同的输出。