当前位置: 首页 > 知识库问答 >
问题:

ColdFusion-Google OAuth2.0不能在Safari上的托管环境中工作

谷梁云瀚
2023-03-14

我在Safari中使用cfhttp时遇到了Google OAuth的问题。它在我的本地环境中工作,但在我们的托管环境中,每次我使用google oauth时,我都会得到以下返回代码

string  400 Bad Request
string  { "error" : "invalid_grant", "error_description" : "Code was already redeemed." }

string HTTP/1.1 400 Bad Request Content-Type:Application/JSON Cache-Control:no-cache,no-store,Max-Age=0,必须重新验证Pragma:no-cache Expires:Fri,1990年1月1日00:00:00 GMT Date:Sat,2014年11月22日01:38:30 GMT X-Content-Type-Options:nosniff X-Frame-Options:SAMEORIGIN X-XSS-Protection:1;mode=block server:GSE备用-协议:443:QUIC,P=0.02传输-编码:分块

    <cffunction name="getGoogleToken" access="public" output="false">
    <cfargument name="Event" type="any">
    <cfargument name="code" type="any">
    <cfset var rc = Event.getCollection() />
    <cfscript>
        var postBody = "code=" & UrlEncodedFormat(arguments.code) & "&";
             postBody = postBody & "client_id=" & UrlEncodedFormat(rc.googleclientid) & "&";
             postBody = postBody & "client_secret=" & UrlEncodedFormat(rc.googleclientsecret) & "&";
             postBody = postBody & "redirect_uri=" & UrlEncodedFormat(rc.googlecallback) & "&";
             postBody = postBody & "grant_type=authorization_code";

    </cfscript>
    <cfhttp url="https://accounts.google.com/o/oauth2/token" method="post" result="result" charset="utf-8"> 
        <cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded"> 
        <cfhttpparam type="body" value="#postBody#"> 
    </cfhttp>               
    <cfdump var="#result#" />
    <cfabort>
    <cfreturn deserializeJSON(result.filecontent.toString()) />
</cffunction>

共有1个答案

华凌
2023-03-14

“代码已经被赎回了。”错误表示您试图使用已经使用过的授权代码。例如,它调用两个函数,因此两次发送访问令牌请求。注意,给定的授权代码只能使用一次。

 类似资料:
  • 共享的托管环境常常会对目录结构以及配置文件有较多的限制。 然而,在大多数情况下,你仍可以通过少量的修改以在共享托管环境下运行 Yii 2.0。 部署一个基础应用模板 由于共享托管环境往往只有一个 webroot,如果可能,请优先使用基础项目模板( basic project template )构建你的应用程序。 参考 安装 Yii 章节在本地安装基础项目模板。 当你让应用程序在本地正常运行后,

  • 我对Environment env有问题。getproperty、env无法找到本地属性,但它可以找到系统属性。我不知道这么多,我需要解决它。请帮帮我。附上我的代码及其配置。 控制器。xml: Paremeters.properties: 控制器: 在此处输入图像描述

  • 我在WebSphere8.5.5上使用Quartz-2.2.3,在集群环境中,我有2个节点,每个节点上有3个JVM。 我正在应用程序启动时配置作业。 问题是作业在每个节点上配置一次,我希望它在两个节点上只配置一次,而不是每个节点上都配置一次。 我的配置如下: QuartzConfig.Properties: ApplicationContextListener:

  • 我创建了一个rails 4.1.4应用程序,试图在heroku上运行,但我得到以下错误- 缺少环境的

  • 我试图运行一个读取环境变量的应用程序,该环境变量包含大约22K个字符的JSON。项目设置告诉我使用来正确配置它,但是当我使用windows时,这些命令不起作用。 我尝试使用GUI环境变量将文件的内容复制到变量中,但是它的输入会将值截断到一定的限制,这个限制甚至不到文件的一半。在此之后,我尝试使用Powershell和以下命令设置变量: 然后用以下命令保存结果:

  • 我用NodeJS和Socketio开发了聊天程序。然后我部署到Heroku服务器,发现SocketIO在Heroku中不工作。 我已经检查了Heroku的日志,但什么都没有。但奇怪的是,它在localhost环境中工作,而不是在Heroku环境中。我想端口设置有些问题。 [服务器端代码] “客户端代码” 第一次,我只是使用代码,它在Localhost env中工作得很好。但是在部署到heroku之