NokiaHERE Api - >缺少身份验证参数

时间:2013-10-29 14:01:30

标签: php curl here-api

我想通过诺基亚这里的地图获取一些城市中某个地方的数据。因此,我想执行一个cuRL请求。我正在构建cURL请求:

$postFields                 = array ( "app_id" => self::APP_ID, "app_code" => self::APP_CODE, "at" => $latLon['lat'] . "," .$latLon['lon'], "q" => $term, "pretty" => "true");
$this->_curl->setUrl        ( $this->getUrl() );
$this->_curl->setPostField  ( $postFields );
$curlResults                = $this->_curl->execute();
var_dump ( $curlResults );

但是当我在浏览器中执行此操作时,我得到了

"{"status":401,"message":"Missing authentication parameters"}"

然而,当我打印出整个东西时。就像使用

构建查询一样

echo $this->getUrl() . "?app_id=" . self::APP_ID, "&app_code=" . self::APP_CODE . "&at=" . $latLon['lat'] . "," .$latLon['lon'] . "&q=" . $term . "&pretty=" . "true";

它没有任何问题。为什么诺基亚告诉我我缺少认证参数?

这里是查询字符串

http://places.nlp.nokia.com/places/v1/discover/search?app_id=XXXXXXX&app_code=XXXXXXX&at=51.2151915838703%2C6.76354323416523&q=Rewe&pretty=true

3 个答案:

答案 0 :(得分:0)

由于您没有提供自行测试的方法,我认为他们不支持$_POST,这就是您正在做的事情。

尝试以下方法:

$postFields                 = array ( "app_id" => self::APP_ID, "app_code" => self::APP_CODE, "at" => $latLon['lat'] . "," .$latLon['lon'], "q" => $term, "pretty" => "true");
$this->_curl->setUrl        ( $this->getUrl() . '?' . http_build_query( $postFields ) );
//$this->_curl->setPostField  ( $postFields );
$curlResults                = $this->_curl->execute();
var_dump ( $curlResults );

这将执行GET请求,该请求有效(根据您)。

答案 1 :(得分:0)

由于缺少上下文(你如何设置self :: APP_ID和self :: APP_CODE?)和缺乏PHP知识,我无法解决你的问题。

但它可能有助于您的搜索错误消息“Missing authentication params”表示curl生成的请求缺少app_id或app_code参数或两者,而不是错误的app_id(在当前实现中)将给出错误消息“无效的app_id app_code组合”。

示例:

http://places.nlp.nokia.com/places/v1/discover/search?app_code=xxxxxxx&at=51.2151915838703%2C6.76354323416523&q=Rewe&pretty=true

返回401,消息“缺少认证参数”,而

http://places.nlp.nokia.com/places/v1/discover/search?app_id=xxxxxx&app_code=xxxxxxx&at=51.2151915838703%2C6.76354323416523&q=Rewe&pretty=true

返回401,其中包含“app_id app_code组合无效”消息。

答案 2 :(得分:0)

我通过仅申请新的应用ID和应用代码来“解决”它。不知道为什么以前没有用,但现在我没有任何重大问题。对于任何好奇。我的请求现在看起来像这样(我尽量让它尽可能简单)

$getString = $this->getUrl() . $this->getAuthString() . "&at=" . $where['lat'] . "," . $where['lon'] . "&q=" . $term . "&pretty=true&size=100";