首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clickbank api未进行身份验证

Clickbank api未进行身份验证
EN

Stack Overflow用户
提问于 2011-05-06 14:03:56
回答 2查看 1.3K关注 0票数 0

尽管分配了正确的API密钥和Dev密钥,但点击银行不会对我的应用程序进行身份验证。它返回403禁止消息。

我的脚本出了什么问题?

代码语言:javascript
复制
 $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.clickbank.com/rest/1.2/sandbox/validateDeveloperKey");
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_GET, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

//for security reasons these are not real keys
    $dev_key="DEV-9E4ABEDD687A7893D3E61CDE7009D4900CB0";
    $api_key= "API-02BFF7786901A18D9Y5FAAAD3853435AE646";

    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/xml", "Authorization: ".$dev_key.":". $api_key));

    $result = curl_exec($ch);
    curl_close($ch);

    print $result;
EN

回答 2

Stack Overflow用户

发布于 2011-08-23 11:08:25

在对ClickBank问题进行故障排除时,必须指出问题请求是发生在ClickBank服务器(https://api.clickbank.com)上的“实时事务”期间,还是发生在沙盒服务器(https://sandbox.clickbank.com)上的“测试事务”期间。

OP似乎是通过向实时ClickBank服务器而不是测试服务器发送请求来测试ClickBank功能。

正如前面的答案所指出的,CURLOPT_URL行应该是:

代码语言:javascript
复制
curl_setopt($ch, CURLOPT_URL, "https://sandbox.clickbank.com/rest/1.2/sandbox/validateDeveloperKey");

此外,在OP中呈现的开发者和API密钥似乎不是适合在沙盒服务器上使用的沙盒密钥。相反,它们是主要的开发人员和API密钥,应用于在实时API服务器上执行实际事务。

ClickBank应用程序接口沙盒开发者密钥格式如下:

DEV-SB-4900BEDD687A7893D3E61CDE7009D4900CB0

OP的developer密钥不包含"-SB-“部分,这表明它不是Sandbox密钥。

利用API服务器的第一步是“准备”一个ClickBank ClickBank沙箱环境。以下是ClickBank https://sandbox.clickbank.com/rest/1.2/sandbox中有关该方法的文档

POST /1.2/ sandbox /prepare -准备沙箱环境。

它将创建一个沙箱开发人员密钥,并将其返回给最终用户。请注意,用户必须在Authorization头部中拥有有效的产品开发人员密钥才能访问此API。

返回类型: SandboxDeveloperData

支持的输出类型: application/xml、application/json

再次重申,在开始向ClickBank沙盒服务器发送测试代码之前,必须首先通过向正确的沙盒URL发送一个PREPARE请求来请求ClickBank沙盒开发人员密钥。“prepare”请求必须在授权标头中包含有效的ClickBank主开发人员密钥,否则它将失败。

接下来,前面的答案也正确地指出,尽管ClickBank自己的PHP示例说要使用curl选项参数CURLOPT_GET,但实际上并不存在这样的curl参数。如果尝试指定GET请求,则要设置的正确参数为CURLOPT_HTTPGET。

话虽如此,YMMV。关于ClickBank的API的文档不多,来自ClickBank的很少的信息包含错误。有可能的是,一旦你调试了你的代码,你仍然会从沙盒服务器得到403的返回,没有明显的原因。

最后,在使用REST服务时,对我来说非常有价值的一个工具是"rest-client“http://code.google.com/p/rest-client/

rest-client允许您在编写第一行代码之前测试对任何REST服务的GET、POST和HEAD请求。

哈!

票数 1
EN

Stack Overflow用户

发布于 2011-06-10 11:49:06

我意识到这个问题已经提出一个月了,现在还没有答案。我希望你现在已经找到了答案,但是如果你还没有找到答案,你的请求有几个问题:

首先:

代码语言:javascript
复制
curl_setopt($ch, CURLOPT_URL, "https://api.clickbank.com/rest/1.2/sandbox/validateDeveloperKey");

应该是:

代码语言:javascript
复制
curl_setopt($ch, CURLOPT_URL, "https://sandbox.clickbank.com/rest/1.2/sandbox/validateDeveloperKey");

注意:我还没有收到对该查询的成功响应(给出了405 Method not Allowed响应)。

第二:没有CURLOPT_GET。如果您已经更改了方法(即CURLOPT_POST),可以使用CURLOPT_HTTPGET重置它,否则默认为GET。(是的,php示例显示了CURLOPT_GET,但手册中没有),如果您打开E_NOTICE,您将看到该故障。

我不确定为什么validateDeveloperKey不能工作,但是我已经成功地处理了所有其他沙箱请求(所有帖子的工作)。我很好奇是否有新的API版本(高于1.2),因为我在谷歌搜索中看到过关于2.1的帖子。

这可能没有准确地回答你的问题,但我希望如果你仍然有问题,我提供的注释对你有帮助。

谢谢/Aaron

更新:在进一步的研究中:为了发送HEAD请求(validateDeveloperKey),您必须设置以下内容:

代码语言:javascript
复制
curl_setopt($ch, CURLOPT_NOBODY, true);

否则,它会将其作为GET请求发送(正如我在上面提到的)。它使用生成的沙箱开发人员密钥(返回204无内容),但是使用我的实际开发人员密钥,它返回403禁止。

再说一次,我希望这能有所帮助。

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

https://stackoverflow.com/questions/5907407

复制
相关文章

相似问题

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