1

我是一个 oAuth 新手,正在努力在 ColdFusion 中针对使用 Pantheon oAuth 库的 PHP 站点实现一个简单的 oAuth 使用者。以下 curl 脚本完美运行并返回我需要的 JSON。

curl -X POST -i -H "内容类型:应用程序/json" -c cookies.txt -X POST https://example.org/service/user/login?mykeyhere -d '{"username":"myuser ","密码":"我的密码"}'

我的问题是如何在 ColdFusion 中实现这一点,将响应的 JSON 返回到我可以解析的变量中?

谢谢你的帮助!


2013 年 5 月 3 日更新

好的,我尝试翻译 cURL 行并且越来越近了 - 这就是我所做的:

<cfset mydata = serializejson('{"username":"myuser","password":"mypass"}')>

<cfhttp url="https://example.org/service/user/login" method="post" >
    <cfhttpparam type="header" name="Content-type" value="application/json" > 
    <cfhttpparam type="header" name="oauth_consumer_key"  value="mykey" > 
    <cfhttpparam type="body" value='#mydata#' >
    <cfhttpparam name="cookies.txt" type="cookie" value="" > 
</cfhttp>

但是,我仍然得到否定的响应——但这似乎是因为我没有正确地从 cURL 脚本传递“-d”子句中的值。有任何想法吗?

再次感谢!


最新更新:尝试了这两种都无济于事 - 我还删除了 cookie 行:

<cfset mydata = '{"username":"myuser","password":"mypass"}'>
<cfset mydata = serializejson('{"username=myuser","password=mypass"}')>

东部时间 3:20

抱歉-根据您对下面的评论进行了更正-但仍然没有运气:

<cfset myData = serializeJSON({username="user",password="pass"})>
4

1 回答 1

2

关于调试 cURL 帖子的好主意 - 我想通了。这只是关于标题 - 数据被正确传递。

创建 JSON 后,这里是 CFHTTP 调用:

<cfhttp url="https://mydomain.org/service/user/login?oauth_consumer_key=myKeyHere" method="post" >
    <cfhttpparam type="header" name="Content-type" value="application/json" > 
    <cfhttpparam type="header" name="Accept" value="*/*" > 
    <cfhttpparam type="body" value="#mydata#" >
</cfhttp>

效果很好 - 感谢 Leigh 帮助我思考这个问题!

于 2013-05-04T16:54:27.183 回答