2013-05-02 42 views
1

我是一位oAuth新手,正在努力在ColdFusion中實現一個使用萬神殿oAuth庫的PHP站點的簡單oAuth消費者。下面的curl腳本完美地工作,並返回我需要的JSON。ColdFusion oAuth消費者反對PHP Pantheon網站

捲曲-X POST -i -H 「內容類型:application/JSON」 -c cookie.txt的-X POST https://mysite.org/service/user/login?mykeyhere -d 「{ 「用戶名」: 「爲myuser」, 「密碼」: 「我的密碼」}'

我的問題是我如何在ColdFusion中實現這個,將響應的JSON返回到我可以解析的變量中?

感謝您的幫助!


UPDATE 13年5月3日

好吧,我試着翻譯捲曲線和我越來越近 - 這是我做的:

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

<cfhttp url="https://mydomain.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 ET

對不起 - 作出修正爲根據您的評論以下 - 但仍然沒有運氣:

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

它看起來像一個簡單的POST請求,所以相當於[cfhttp](http://help.adobe.com/zh_CN/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7ffc.html),帶有一些[headers/parameters ](http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7d85.html)拋出,即'Content-Type','body'。首先查看[cURL手冊](http://curl.haxx.se/docs/manpage.html)。翻譯選項,即'-X,-i,-H,-d',看看你有多遠。如果遇到問題,請回復您的代碼。 – Leigh 2013-05-02 22:41:09

+0

非常感謝Leigh - 關於我的工具的任何想法? – Ben 2013-05-03 15:58:12

+0

值字符串看起來不對。您使用的輸入字符串已經是json格式。所以用'serializeJSON'封裝它會破壞它。我懷疑你是想用CF的隱式結構符號代替。注意使用'='而不是':'。即''cfset myData = serializeJSON({username =「myuser」,password =「mypass」})>' – Leigh 2013-05-03 18:44:22

回答

2

cURL文章的調試的好主意 - 我想通了。這只是關於頭 - 數據WAS正確傳遞。

一旦創建了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> 

偉大工程 - 拜利您幫我度過覺得這個!

+0

很高興你知道了,並感謝張貼的決議:) – Leigh 2013-05-05 17:02:48