嘿傢伙們,我試圖找出使用ColdFusion的oAuth過程,並且似乎沒有很多關於論壇的信息。Coldfusion Vimeo oAuth
我總是收到「401未經授權 - 無效簽名 - 傳遞的oauth_signature無效」但我傳遞了正確的一條。
這是我的過程。::
我使用OAuth的代碼庫從http://oauth.googlecode.com/svn/code/coldfusion/oauth
使用有例子爲Twitter和Google我已經修改了它象下面這樣工作。
<cfset sConsumerKey = "XXX">
<cfset sConsumerSecret = "YYY">
<cfset sTokenEndpoint = "http://vimeo.com/oauth/request_token">
<cfset oReqSigMethodSHA = CreateObject("component", "oauth.oauthsignaturemethod_hmac_sha1")>
<cfset oToken = CreateObject("component", "oauth.oauthtoken").createEmptyToken()>
<cfset oConsumer = CreateObject("component", "oauth.oauthconsumer").init(sKey = sConsumerKey, sSecret = sConsumerSecret)>
<cfset myParams = structNew() />
<cfset myParams.oauth_callback = "http://XXX.XXX/web/oAuth/examples_external/vimeo2.cfm" />
<cfset oReq = CreateObject("component", "oauth.oauthrequest").fromConsumerAndToken(
oConsumer = oConsumer,
oToken = oToken,
sHttpMethod = "GET",
sHttpURL = sTokenEndpoint,
stParameters = myParams)>
<cfset oReq.signRequest(
oSignatureMethod = oReqSigMethodSHA,
oConsumer = oConsumer,
oToken = oToken)>
<cfhttp url="#oREQ.getString()#" method="get" result="tokenResponse"/>
然後返回oauth_token & oauth_verifier。
<cfset sConsumerKey = "XXX">
<cfset sConsumerSecret = "YYY">
<cfset sAuthorizationEndpoint = "http://vimeo.com/oauth/access_token"> <!--- Authorize URL --->
<cfset oReqSigMethodSHA = CreateObject("component", "oauth.oauthsignaturemethod_hmac_sha1")>
<cfset oToken = CreateObject("component", "oauth.oauthtoken").createEmptyToken()>
<cfset oConsumer = CreateObject("component", "oauth.oauthconsumer").init(sKey = sConsumerKey, sSecret = sConsumerSecret)>
<cfset myParams = structNew() />
<cfset myParams.oauth_token = URL.oauth_token />
<cfset myParams.oauth_verifier = URL.oauth_verifier />
<cfset myParams.oauth_callback = "oob" />
<cfset oReq = CreateObject("component", "oauth.oauthrequest").fromConsumerAndToken(
oConsumer = oConsumer,
oToken = oToken,
sHttpMethod = "GET",
sHttpURL = sAuthorizationEndpoint ,
stParameters = myParams)>
<cfset oReq.signRequest(
oSignatureMethod = oReqSigMethodSHA,
oConsumer = oConsumer,
oToken = oToken)>
<cfhttp url="#oREQ.getString()#" method="get" result="tokenResponse"/>
<cfdump var="#tokenResponse#" />
而且從CFHTTP的結果是401錯誤
他們的回答應該更加詳細,比如'401未經授權 - 無效的API密鑰 - 傳遞的API密鑰無效。你能看到擴展部分來自通用代碼之後嗎? – Sergii 2010-07-14 06:58:15
是啊有沒有「401未經授權 - 無效的簽名 - 通過oauth_signature無效」 但我使用的oauth類,所以它應該是正確的.... – ozatomic 2010-07-15 00:24:44
有沒有人有任何更多的反饋,可能是什麼問題? – ozatomic 2010-07-18 22:56:05