【问题标题】:401 When trying to get Access Token from Windows Live (ColdFusion)401 尝试从 Windows Live (ColdFusion) 获取访问令牌时
【发布时间】:2011-05-24 20:17:55
【问题描述】:

我正在尝试遵循微软为获取访问令牌提供的这个示例: http://msdn.microsoft.com/en-us/library/ff750952.aspx

我的代码如下所示:

<cfset ACCESS_TOKEN_URL = "https://consent.live.com/AccessToken.aspx" />

<cfset clientID = "0000000048052422" />
<cfset secretKey = "9MzM2FgYMHDg2TF9165PaU548ix4efVg" />
<cfset callbackURL = "http://sportsbuzz.local/" />

<cfhttp method="post" url="#ACCESS_TOKEN_URL#" result="liveResult">
    <cfhttpparam type="url" name="wrap_client_id" value="#clientID#" />
    <cfhttpparam type="url" name="wrap_client_secret" value="#secretKey#" />
    <cfhttpparam type="url" name="wrap_callback" value="#callbackURL#" />
    <cfhttpparam type="url" name="wrap_verification_code" value="#url.wrap_verification_code#" />
    <cfhttpparam type="url" name="idtype" value="CID" />
</cfhttp>

<cfdump var="#liveresult#">

但我收到以下响应的 401 错误:

文件内容 401 - 未经授权:由于凭据无效,访问被拒绝。

服务器错误

401 - 未经授权:由于凭据无效,访问被拒绝。

您无权使用您提供的凭据查看此目录或页面。 标头 HTTP/1.1 401 未经授权过期:-1 日期:星期二,2011 年 5 月 24 日 20:11:52 GMT 服务器:Microsoft-IIS/7.5 内容长度:1293 Pragma:无缓存缓存控制:无缓存 Set-Cookie : mktstate=S=948418761&U=&E=&P=&B=;域=.live.com; path=/ Set-Cookie: mkt1=norm=;域=.live.com; path=/ Set-Cookie: mkt2=ui=en-us;域=.consent.live.com; path=/ WWW-Authenticate: WRAP X-AspNet-Version: 2.0.50727 PPServer: PPV: 30 H: BAYIDSTOOL1B09 V: 0 Content-Type: text/html

我不明白我哪里出错了。有什么建议吗?

【问题讨论】:

    标签: authentication coldfusion oauth


    【解决方案1】:

    您是否首先获得了验证码(大多数 OAuth 实现中的请求令牌)?

    您需要先获取它才能请求访问令牌:http://msdn.microsoft.com/en-us/library/ff749592.aspx

    您正在使用一些 url.wrap_verification_code 变量,但在这段代码中没有设置它。

    【讨论】:

    • 是的,我得到了验证码,它看起来像这样:sportsbuzz.local/… 所以你是对的,我没有设置 url.wrap_verification_code,而是直接从 url 中提取它(因为此时 windows live 已将用户转发回服务器,并附加了 url 参数)感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2011-10-25
    相关资源
    最近更新 更多