我正在使用OAuth2.0在PHP中设计API。我的最终目标是用javascript(使用AngularJS)构建可直接访问此API的前端应用程序。我知道,传统上无法用javascript保护交易,因此直接访问API是不可行的。前端需要与服务器代码进行通信,而服务器代码又直接与API进行通信。但是,在研究OAuth2时,似乎好像是在设计User-
Agent Flow来帮助解决这种情况。
我需要帮助的是在javascript中实现OAuth2用户代理流程(如果可能的话,尤其是AngularJS,因为这是我在前端使用的功能)。我还没有找到执行此操作的任何示例或教程。我真的不知道从哪里开始,也不想通读整个OAuth2规范,而至少没有看到我将要做的事情的示例。因此,任何示例,教程,链接等都将不胜感激。
该隐格兰特流(你指的是作为一个 用户代理流量 )正好是要走的路:
要了解流程,Google的客户端应用程序文档是一个很好的起点。请注意,他们建议您采取额外的
令牌验证 步骤,以避免混淆的代理问题。
<script type="text/javascript" charset="utf-8">
$(function () {
var extractToken = function(hash) {
var match = hash.match(/access_token=([\w-]+)/);
return !!match && match[1];
};
var CLIENT_ID = YOUR_CLIENT_ID;
var AUTHORIZATION_ENDPOINT = "https://soundcloud.com/connect";
var RESOURCE_ENDPOINT = "https://api.soundcloud.com/me";
var token = extractToken(document.location.hash);
if (token) {
$('div.authenticated').show();
$('span.token').text(token);
$.ajax({
url: RESOURCE_ENDPOINT
, beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', "OAuth " + token);
xhr.setRequestHeader('Accept', "application/json");
}
, success: function (response) {
var container = $('span.user');
if (response) {
container.text(response.username);
} else {
container.text("An error occurred.");
}
}
});
} else {
$('div.authenticate').show();
var authUrl = AUTHORIZATION_ENDPOINT +
"?response_type=token" +
"&client_id=" + clientId +
"&redirect_uri=" + window.location;
$("a.connect").attr("href", authUrl);
}
});
</script>
<style>
.hidden {
display: none;
}
</style>
<div class="authenticate hidden">
<a class="connect" href="">Connect</a>
</div>
<div class="authenticated hidden">
<p>
You are using token
<span class="token">[no token]</span>.
</p>
<p>
Your SoundCloud username is
<span class="user">[no username]</span>.
</p>
</div>
要使用AngularJS
发送XMLHttpRequests(该ajax()
函数在jQuery中的功能),请参阅其$http
服务文档。
如果要保留状态,则在将用户发送到授权端点时,请签出该state
参数。
我正在尝试使用圣杯从推特上获取一些推文。twitter API现在需要通过OAuth2进行身份验证,我以前在其他框架和语言中已经使用一些插件/库非常轻松地完成了身份验证,但是我似乎无法在Grails中找到有效的实现。大多数谷歌搜索似乎都会出现与使用OAuth验证用户作为服务器相关的结果,因为我试图让Grails而不是充当客户端。 这个插件看起来很有希望,但是它的存储库似乎被破坏了,因为以下指向二进
问题内容: 我有课 和班级 关键是该方法不安全,因为我可以提供的项目与当前报告无关,但与其他报告相关,编译器不会抱怨。 是否可以用类型安全的方式编写该方法,即我们可以仅将T作为当前报表的类型作为参数传递。 问题答案: 我认为您正在寻找以下内容。 它的工作方式是: 您想用从 您要确保所有列表都属于同一类型 为了将参数绑定到从扩展的对象,您需要对自身进行参数化: 您添加需要从报表扩展的绑定 但是您要
我开始用node.js、express和MongoDB规划一个REST API。该API为一个网站(公共和私人区域)提供数据,之后可能还会为一个移动应用程序提供数据。前端将使用AngularJS开发。 几天来,我读了很多关于保护REST API的文章,但我没有得到最终的解决方案。据我理解就是用HTTPS来提供一个基本的安全性。但如何在用例中保护API: > 仅允许网站/应用程序的访问者/用户获取网
我的一位同事实现了访问api所需的授权代码流,我们将access和refresh_tokens基本存储在数据库中以访问这个第三方api。但是感觉不对,我也找不到任何最佳的做法,有谁能帮我吗?
问题内容: 当居中的flexbox项溢出其容器时,它们可能具有不良行为。 已经针对此问题提供了几种非灵活的解决方案,但是根据MDN,存在一个如下所述的值。 如果项目的大小溢出对齐容器,则将对齐该项目,就好像对齐模式已开始一样。 可以如下使用。 不幸的是,我无法找到任何示例或讨论,也无法确定浏览器对此有多少支持。 我试图在此CodePen中使用。但是,它对我不起作用。本似乎被忽略,或者容器元素是不正
我的应用程序在Google Play中被拒绝了,因为TrustManager的一些不安全的实现。 但是在我的库中,我只有TrustManager的一个实现(这是我的SSLUtil类)。 我不明白为什么我的申请被拒绝了。