首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与吴富的认证问题

与吴富的认证问题
EN

Stack Overflow用户
提问于 2010-05-30 15:17:57
回答 1查看 1.4K关注 0票数 1

我设置了一个只包含管理部分的乌福表单,只有在登录时才会显示。我阅读了武福市API文档,我可以让授权工作,但是当我尝试在身份验证之后访问表单时,它会说我需要进行身份验证。到目前为止,这就是我所拥有的(子域、api键和表单id更改)。

代码语言:javascript
复制
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$curl1 = curl_init('http://fishbowl.wufoo.com/api/v3/users.xml');
curl_setopt($curl1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl1, CURLOPT_USERPWD, 'AOI6-LFKL-VM1Q-IEX9:footastic');
curl_setopt($curl1, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl1, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl1, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl1, CURLOPT_USERAGENT, 'Wufoo Sample Code');

$response = curl_exec($curl1);
$resultStatus = curl_getinfo($curl1);

if($resultStatus['http_code'] == 200) {
    echo 'success!<br>';
} else {
    echo 'Call Failed '.print_r($resultStatus);
}

$curl2 = curl_init("http://fishbowl.wufoo.com/api/v3/forms/w7x1p5/entries.json"); 
curl_setopt($curl2, CURLOPT_HEADER, 0);
curl_setopt($curl2, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl2);
curl_close ($curl2);
echo $response;

curl_close($curl1);

?>

无论是在调用$curl1之前还是之后关闭$curl2,屏幕上都会收到相同的消息:

成功! 你必须通过认证才能得到好东西。

我知道api、子域和表单id都是正确的。

最后一个额外的问题..。我可以使用Ajax来完成所有这些工作吗?-我将显示表单的页面已经被限制在管理访问权限中,所以公开API并不重要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-30 18:07:36

好吧,我做了些调查。

问题是,您需要对要对API进行的每个调用进行身份验证。我注意到在您使用的URL (http://fishbowl.wufoo.com/api/v3/users.xml)中,您使用了http,但是API要求您使用https。只有在尝试通过正常的HTTP协议进行访问时,才会得到该You must authenticate to get at the goodies.消息。

所以在你的第二个电话里,你需要重新验证一下。

然后,您的代码应该如下所示:

代码语言:javascript
复制
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$curl1 = curl_init('https://fishbowl.wufoo.com/api/v3/users.xml');
curl_setopt($curl1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl1, CURLOPT_USERPWD, 'AOI6-LFKL-VM1Q-IEX9:footastic');
curl_setopt($curl1, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl1, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl1, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl1, CURLOPT_USERAGENT, 'Wufoo Sample Code');

$response = curl_exec($curl1);
$resultStatus = curl_getinfo($curl1);

if($resultStatus['http_code'] == 200) {
    echo 'success!<br>';
} else {
    echo 'Call Failed '.print_r($resultStatus);
}

$curl2 = curl_init("https://fishbowl.wufoo.com/api/v3/forms/w7x1p5/entries.json"); 
curl_setopt($curl2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl2, CURLOPT_USERPWD, 'AOI6-LFKL-VM1Q-IEX9:footastic');
curl_setopt($curl2, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl2, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl2, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl2, CURLOPT_USERAGENT, 'Wufoo Sample Code');
$response = curl_exec($curl2);
curl_close ($curl2);
echo $response;

curl_close($curl2);

?>

关于在AJAX中完成所有这些的问题,目前还不可能,因为Wufoo不支持JSONP回调(这允许跨域AJAX请求)。(如果你不知道我在说什么读另一个这样的问题),如果你想把这个功能插入到AJAX中,你可以在本地服务器上对你的PHP脚本执行AJAX调用。PHP脚本将执行与上述类似的操作,并使用Wufoo进行身份验证。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2939179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档