0

我的授权标头看起来像这样(为安全起见,参数稍作更改,为了便于阅读而换行):

    <cfset oAuthHeader = 'OAuth oauth_consumer_key="zz3u0Lf9XxkC2KX839r2MS0fDltvLquow3ZMLaOw",
oauth_nonce="9BD4FAE88D1B213F86D908FE183F0501C682EE2F",
oauth_signature="Zy91IhXWGcMxyuAVIlGX%2F3ULTWU%3D",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1337169270",
oauth_version="1.0"' 

我的 cfhttp 调用如下所示:

 <cfhttp url="#oRequestReq.getNormalizedHttpURL()#" method="POST">
            <cfhttpparam type="header" name="Authorization" value="#oAuthHeader#">
            <cfloop collection="#arguments#" item="key">
                <cfif key neq 'fieldnames'>
                    <cfhttpparam type="formfield" name="#key#" value="#arguments[key]#">
                </cfif>
            </cfloop>
        </cfhttp>

运行<cfdump var="#GetHttpRequestData()#">,我得到以下信息,这表明我的字段作为 formfield 参数通过 OK,但是我的 Authorization 标头无处可见。

![在此处输入图像描述][1]

Authorization 标头不应该包含在 Headers 结构中吗?[1]:http: //i.stack.imgur.com/VbQQO.jpg

4

2 回答 2

0

难道不应该...

<cfset oAuthHeader = {
    'oauth_consumer_key'="zz3u0Lf9XxkC2KX839r2MS0fDltvLquow3ZMLaOw",
    'oauth_nonce'="9BD4FAE88D1B213F86D908FE183F0501C682EE2F",
    'oauth_signature'="Zy91IhXWGcMxyuAVIlGX%2F3ULTWU%3D",
    'oauth_signature_method'="HMAC-SHA1",
    'oauth_timestamp'="1337169270",
    'oauth_version'="1.0"
}>

<cfhttp url="#oRequestReq.getNormalizedHttpURL()#" method="POST">
    <cfloop collection="#oAuthHeader#" item="key">
        <cfhttpparam type="header" name="#key#" value="#oAuthHeader[key]#">
    </cfloop>
    <cfloop collection="#arguments#" item="key">
        <cfif key neq 'fieldnames'>
            <cfhttpparam type="formfield" name="#key#" value="#arguments[key]#">
        </cfif>
    </cfloop>
    ...
</cfloop>

?

于 2012-05-16T16:13:46.067 回答
0

你是如何获得 oauth_signature 的?这不是 OAuth 中的硬编码 - 它每次都会生成。

我建议使用这个库http://oauth.riaforge.org/

那里有一些示例可以帮助您入门。

于 2012-05-16T14:09:36.897 回答