我已经创建了一个C#.NET客户端,用于连接Adobe的SiteCatalyst / Omniture / Reporting 1.4 REST API(上帝知道为什么他们必须拥有相同数量的名称)才能100%暴露API支持的功能,我希望将其作为公共NuGet包发布,但我遇到了身份验证问题。
我已经完成了他们的文档中所述的所有内容(包括设置应用程序等)以进行身份验证,在此处说明 - https://marketing.adobe.com/developer/en_US/documentation/authentication/auth-client-credentials#concept_5190CB12025F4B29947AB2CF13435C9C - 并尝试了我所知道的所有方式来制作身份验证请求并且总是收到错误,说我没有发送grant_type。我已经尝试将其作为查询字符串参数,标题,URL编码的POST,JSON POST以及4的所有可能组合发送。它们都会返回相同的错误。
我还尝试使用Fiddler在使用文档中列出的curl语句时捕获请求:
$ curl -i -v "https://api.omniture.com/token" -u 'YOUR_CLIENT_ID:YOUR_CLIENT_SECRET' -d "grant_type=client_credentials"
不幸的是,当我使用Windows curl执行此操作时,它只是说它无法验证SSL证书。
如果有人能够告诉我成功验证的请求是什么样的(标题,正文等等 - 虽然你可以删除凭据)我可以完成NuGet包并让它在那里供所有人使用与.NET的.NET API报告API轻松连接。
提前感谢您的任何帮助或建议!
-Ben
答案 0 :(得分:0)
作为一段时间的测试,我使用这个HTML表单在OA2握手中执行此步骤。
<FORM action="https://api.omniture.com/token" method="post">
<P>
<LABEL for="grant_type">grant_type: </LABEL>
<INPUT type="text" name="grant_type" value="authorization_code"><BR>
<LABEL for="code">code: </LABEL>
<INPUT type="text" name="code" value="a77911ad9d0adf28f215577d7f05cda52fae8721"><BR>
<LABEL for="client_id">client_id: </LABEL>
<INPUT type="text" name="client_id" value="com.cdegroot.OA2.test1"><BR>
<LABEL for="client_secret">client_secret: </LABEL>
<INPUT type="text" name="client_secret" value="4169edfc847e77cfb35b"><BR>
<LABEL for="redirect_uri">redirect_uri: </LABEL>
<INPUT type="text" name="redirect_uri" value="http://localhost:9099"><BR>
<INPUT type="submit" value="Send">
</P>
这应该会给你一些指示它的工作原理。
谢谢C&gt;