我正在尝试使用Dropbox从ColdFusion应用程序实现OAuth,我设法调用Dropbox方法来生成访问令牌,但是......我不知道如何从中生成TOKEN响应URI。我从Dropbox得到这样的东西:
http://localhost/dropbox/generate_token.cfm#access_token=AAAAAAAAYVM_XdCYlbTz0gQOwQkWlg6TDXf84_5h4giikg6J-7Man&token_type=bearer&uid=267693&account_id=dbid%3AAABeDMm-BN0n1DofLZz9kPZAipnQ
在这种情况下如何检索URL变量?我的意思是如果我做了
<cfdump var="#URL#">
我得到一个空结构。如果我做了
<cfdump var="#CGI#">
我仍然没有在结构中看到任何URL检索的参数。如何从Dropbox响应中获取变量及其值?
答案 0 :(得分:1)
已更新
在某些时候,我认为我找到了一种阅读网址的方法,但现在 - 无缘无故 - 这已经不再适用了!我没有做任何改变,但下面的解决方案不再适用。
我可以使用document.location
使用JavaScript阅读完整的网址,但这意味着要对ColdFusion页面进行额外提交,而我不想这样做。我想从URL获取Dropbox令牌并直接在此页面中将其保存到数据库...
请问任何新想法?
解决方案似乎在某些方面工作......
我找到了一种使用此方法获取URI字符串的方法:
<cfset objRequest = GetPageContext().GetRequest().getParameterMap() />
<cfdump var="#objRequest#">
<cfoutput>
<cfloop collection="#objRequest#" item="i">
<p>
#i# - #objRequest[i][1]#
</p>
</cfloop>
</cfoutput>
从现在开始,我知道如何获取Dropbox返回的值。
答案 1 :(得分:0)
我找到了一种通过JavaScript读取浏览器URL来获取返回参数的方法,因此分两步:第一次,解析并提取完整的URL,包括#符号之后的部分(我找到了)这有一个名称,它被称为“URL片段”)和第二,创建一个带有已解析参数的JavaScript表单并重新提交给服务器。这是代码:
<cfparam name="FORM.action" default="">
<cfif FORM.action IS "save_token">
<cfdump var="#FORM#">
<cfelse>
<form name="main" id="main" method="post">
<input type="hidden" name="action" id="action" value="save_token">
</form>
<script type="text/javascript" language="javascript">
<!--
var parameters = window.location.hash.substr(1).split("&");
function addHidden(theForm, key, value) {
// Create a hidden input element, and append it to the form:
var input = document.createElement("input");
input.type = "hidden";
input.name = key;
input.value = value;
theForm.appendChild(input);
}
// Form reference:
var theForm = document.forms["main"];
for (var i=0; i<parameters.length; i++) {
// Add data:
addHidden(theForm, parameters[i].split("=")[0], parameters[i].split("=")[1]);
}
theForm.submit();
//-->
</script>
</cfif>