因此,我正在创建一个可与coinbase一起使用的Web应用程序。前端是带有html和jquery的标准静态页面,这非常有用。后端是由Spring 5制作的一个单独的Web应用程序,具有一堆RESTful Web服务。
我转到我的login.html,然后登录。这意味着我将用户名/密码发送回我的登录Spring Controller,然后将访问令牌发送回UI。我将其放入Cookie中,然后重新加载新页面,该页面上带有一个大的胖授权按钮。
该按钮对传入令牌的Spring RESTful控制器进行AJAX调用,因为我想确保该端点安全,这很好用。
在后端(或中间件)上,我正在对Coinbase进行RESTful调用以启动Oauth2身份验证过程。我从属性文件中读取了我的client-id,并传入了redirectURI和状态。所有这一切都很好,它可以用于coinbase,并且响应是HTML。我将其传回给我的客户端(前端),并且有了这个HTML,这就是coinbase授权页面。
现在,这里变得很有趣了……我是一个后端人员,因此我可以毫无问题地在后端进行RESTful呼叫。我得到了HTML,它应该是AUTHORIZE页面,允许用户将我的Web应用程序与他们的coinbase帐户一起使用。我得到HTML,现在不知所措,无法在我的页面或新页面上显示此html。这是我缺少的javascript和jquery知识。
我的authorize.js中的AJAX代码如下所示:
$.ajax({
url : 'http://localhost:8080/myapp-be/api/coinbase/authorization',
headers : {'mytoken' : mytoken},
dataType: 'html',
cache: false,
success: function(response) {
$("html").html(response);
}
});
这是正确的方法吗?
我绝对可以将coinbase调用放入浏览器中,然后轻松弹出Coinbase授权对话框。如果我授权,请输入用户名/密码,然后将我发送到作为回调重定向uri传入的回调页面。
但是,据我了解,我们不希望向任何人公开客户ID。这就是为什么我的后端会这样做,而我们只返回HTML。所以,我在这里受阻。
在我当前的代码中,我遇到了许多Javascript错误,我只是知道这不是要走的路。我遇到了许多CORS问题,当我尝试授权时,出现错误,提示它无法到达正确的页面。
如何正确调用Coinbase授权API。他们的文档页面:
https://developers.coinbase.com/docs/wallet/coinbase-connect/integrating
在步骤1中显示:
GET
https://www.coinbase.com/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URL&state=SECURE_RANDOM&scope=wallet:accounts:read
因此,可悲的是,我对解决此问题的最佳方法有些困惑。
如果可以的话,我可以通过客户端公开该客户端ID进行GET调用吗?
或者,我可以找出正确的方法来显示返回Coinbase授权页面的HTML?
谢谢您的帮助!
最佳答案
因此,距离我不得不做任何UI工作已经很长时间了。我从来不必担心跨脚本或iframe问题或与前端(UI)相关的安全性问题。
从我收集的数据来看,将HTML从第三方网站拖到div或我网站上的iframe并不是最佳方案。我可以告诉您,即使我确实将HTML提取到我网站上的网页中,仍然存在大量的JavaScript错误和CORS问题。
最终,我对中间件的ajax调用被更改为仅拉回coinbase授权URL。一个简单的Windows重定向,就在应有的地方,我在coinbase网站上。完成授权后,我将被重定向回我告诉Coinbase要做的重定向链接。
因此,获取链接并执行简单的重定向即可。没有将第三方网站的HTML加载到我的网页中。学过的知识!
谢谢!希望这可以帮助其他人。
关于javascript - coinbase oauth授权返回html,如何与我的网络应用程序集成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59037705/