$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;
Run Code Online (Sandbox Code Playgroud)
什么应该是redirect_uri?我试过用这个
'https://graph.facebook.com/oauth/authorize?client_id='.$app_id.'&
redirect_uri='.urlencode($canvas_page).'&scope=email,read_stream,publish_stream';
Run Code Online (Sandbox Code Playgroud)
但它返回时出现此错误
{
"error": {
"message": "Error validating verification code.",
"type": "OAuthException"
}
}
Run Code Online (Sandbox Code Playgroud)
需要帮助,提前致谢.
我们使用username-password grant从我们的auth服务器获取访问令牌.我们希望使用提供的刷新令牌在访问令牌到期之前刷新访问令牌,直到用户注销或关闭客户端应用程序.
但是我找不到任何关于如何发出此刷新令牌请求的示例.
要获得令牌,我们称之为:
curl -v --data "grant_type=password&username=user&password=pass&client_id=my_client" http://localhost:8080/oauth/token
Run Code Online (Sandbox Code Playgroud)
所以要刷新我希望调用看起来像这样:
curl -v --data "grant_type=refresh_token&access_token=THE_ACCESS_TOKEN&refresh_token=THE_REFRESH_TOKEN" http://localhost:8080/oauth/token
Run Code Online (Sandbox Code Playgroud)
或者可能
curl -v -H "Authorization: Bearer THE_ACCESS_TOKEN" --data "grant_type=refresh_token&refresh_token=THE_REFRESH_TOKEN" http://localhost:8080/oauth/token
Run Code Online (Sandbox Code Playgroud)
但它只会给我一个401 ..
哦是的,也许我需要添加clientId?我不能使用客户端密钥,因为没有(请参阅上面获取令牌的请求).毕竟使用用户名和密码进行身份验证.
我认为我们的服务器配置正确,所以我不会在这里发布.如果我的一个示例请求应该工作,并且您需要查看重要的配置部分,我将添加它们.
谢谢!
spring spring-security access-token oauth-2.0 spring-security-oauth2
我正在与AngularJS建立一个与服务(JAVA)通信的SPA.
当用户发送他的用户名/密码时,服务会发回两个:访问令牌和刷新令牌.我正在尝试处理:如果我得到状态401的响应,则发送回刷新令牌,然后再次发送您的最后一个请求.我尝试使用包含$ http来做到这一点,但angular不允许我将它包含在这个拦截器中.有没有办法用我收到的响应参数重新创建原始请求?
就像是:
在错误重定向到/登录页面
'use strict';
angular.module('testApp')
.factory('authentificationFactory', function($rootScope, $q, $window, $location, CONF) {
return {
request: function(config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
}
console.log(config);
$rootScope.lastRequest = config;
return config;
},
response: function(response) {
console.log($rootScope.lastRequest);
if (response.status === 401) {
if ($window.sessionStorage.refreshToken) {
//Save, request new token, send old response
//if it fails, go to login
$location.url('/login');
} else {
$location.url('/login');
}
}
return response …Run Code Online (Sandbox Code Playgroud)javascript authentication http-status-code-401 access-token angularjs
我正在Yii 1.x中构建一个API,它将与移动应用程序一起使用.部分过程涉及使用以下JSON请求登录(使用用户名和密码): -
//使用用户名和密码发送的请求
{
"request" : {
"model" : {
"username" : "bobbysmith",
"password" : "mystrongpassword"
}
}
}
Run Code Online (Sandbox Code Playgroud)
//如果成功登录,则返回以下响应
{
"response": {
"code": 200,
"message": "OK",
"model": {
"timestamp": 1408109484,
"token": "633uq4t0qdtd1mdllnv2h1vs32"
}
}
}
Run Code Online (Sandbox Code Playgroud)
此令牌非常重要 - 一旦用户登录应用程序,我希望他们可以访问要求他们登录的其他页面.我希望移动应用程序存储此令牌,如果相同的633uq4t0qdtd1mdllnv2h1vs32令牌是在任何后续请求中发现它将接受此作为经过身份验证的请求(对于此用户'bobbysmith').
我有点不确定如何最好地做到这一点,我做了一些研究,oAuth已被提及几次,以及通过HTTPS的基本身份验证.
所以简而言之......
任何人都可以解释实现这一目标的最佳方法吗?如果我所说的内容不是100%明确的,请告诉我,我会提供更多信息.
当我使用PHP时,Yii 1.x解决方案是理想的,因为这是使用当前API构建的.
概括地说,该应用可确保到服务器的每个请求包括在所述有效载荷或报头,以便此令牌可以被检索令牌每随后的后,一旦退出该令牌被简单地移除或设置为空/空
我正在REST使用api NodeJS.对于身份验证我决定使用Passport.我想要真正的RESTful api.所以这意味着我必须使用令牌而不是会话.
我想让用户使用用户名和密码登录,或者使用Facebook,Google和Twitter等社交网络.
我创建自己的OAuth2.0服务器来发布Access和Refresh tokens使用oauth2orize模块.所以现在我可以注册新用户,然后发出令牌.我按照本教程:
http://aleksandrov.ws/2013/09/12/restful-api-with-nodejs-plus-mongodb/
验证用户的路由:
// api ------------------------------------------------------------------------------------
app.get('/api/userInfo',
passport.authenticate('bearer', { session: false }),
function(req, res) {
// req.authInfo is set using the `info` argument supplied by
// `BearerStrategy`. It is typically used to indicate scope of the token,
// and used in access control checks. For illustrative purposes, this
// example simply returns the scope in the response.
res.json({ user_id: req.user.userId, name: req.user.username, …Run Code Online (Sandbox Code Playgroud) node.js access-token express facebook-access-token passport.js
据我所知,OAuth 2.0规范在access token应采取的形式方面非常模糊:
令牌可以表示用于检索授权信息的标识符,或者可以以可验证的方式自包含授权信息(即,由一些数据和签名组成的令牌串).可能需要额外的身份验证凭据(超出本规范的范围),以便客户端使用令牌.
访问令牌提供抽象层,用资源服务器理解的单个令牌替换不同的授权构造(例如,用户名和密码).这种抽象使得发布访问令牌比用于获取它们的授权授权更具限制性,并且消除了资源服务器理解各种身份验证方法的需要.
访问令牌可以具有基于资源服务器安全性要求的不同格式,结构和利用方法(例如,加密属性). 访问令牌属性和用于访问受保护资源的方法超出了本规范的范围,并由协议规范(如RFC6750)定义.
(重点补充)
链接的RFC6750没有提供更多的进一步特异性.有一个示例HTTP响应正文显示:
{
"access_token":"mF_9.B5f-4.1JqM",
"token_type":"Bearer",
"expires_in":3600,
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA"
}
Run Code Online (Sandbox Code Playgroud)
这似乎表明access_token可以是不透明的ASCII文本,例如编码的JSON Web令牌(JWT)
从我的角度来看,似乎JWT-as-access_token具有一些理想的属性:
它是一个已知的规范,具有相当广泛的采用和许多语言的客户端库.
它允许使用经过审查的加密库轻松签名和验证.
因为它可以解码为JSON,所以它允许我们在令牌本身中包含有关令牌的元数据和信息.
我的问题是:首先,允许访问令牌是JWT吗?其次,如果根据规范是允许的,那么使用JWT作为访问令牌会有什么额外的考虑因素吗?
我正在使用OIDC和OAuth 2.0(使用Auth0)构建一个系统,我不确定如何正确使用id_token和access_token.或者更确切地说,我对在我的设置中分配给各种服务的角色感到困惑.
我有一个完全静态的前端应用程序(单页面应用程序,HTML + JS,没有后端),可确保使用针对Auth0的隐式流程对用户进行身份验证.然后,前端应用程序从我正在构建的API中获取数据.
现在,哪个是对的?
...要么:
如果我的前端和后端API都可以被认为是客户端,我认为在id_token我的前端到后端的请求中使用持票令牌没有真正的危害- 这很有吸引力,因为那时我可以简单地验证签名后的令牌后端,我有关于我需要的用户的所有信息.但是,如果我的API被认为是资源服务器,我应该使用它access_token,但是我必须在每个API请求上连接到Auth0的服务器以验证令牌,并获得基本的用户信息,不是吗?
我已经读过这个似乎表明它access_token是我的API使用的唯一有效令牌.但就像我说的那样,我不确定个别服务的角色.并且使用它id_token很诱人,因为它在后端不需要网络连接,并且包含提取正确数据所需的信息.
什么是正确的方法?
我使用 git 与 VSCode 集成,今天收到通知,我需要更新我的访问令牌。我这样做并获得了新令牌(我通过网络界面获得)。现在我需要设置本地 git 配置以使用新令牌而不是几天后就会过期的旧令牌。
VSCode文档建议如下:
要执行“GitHub:设置个人访问令牌”,请在 VSCode 中键入 Ctrl+Shift+p 打开命令面板,然后键入“GitHub:设置个人访问令牌”。然后系统会提示您输入从 GitHub 生成的令牌。
此选项在 VS code 中的 git 集成中不可用(也许我需要更新?)
我如何从命令行执行此操作?
在我的Android应用程序中,我试图从GoogleAuthUtil获取AccessToken,如下所示:
accessToken = GoogleAuthUtil.getToken(this,mPlusClient.getAccountName(),"oauth2:"+ SCOPES);
但在这一行我得到的错误如下:
E/GoogleAuthUtil(4696):调用此从你的主线程可以导致死锁和/或ANR的E/GoogleAuthUtil(4696):java.lang.IllegalStateException:调用该从你的主线程可以导致死锁E/GoogleAuthUtil(4696) :在com.google.android.gms.auth.GoogleAuthUtil.b(未知来源)E/GoogleAuthUtil(4696):在com.google.android.gms.auth.GoogleAuthUtil.getToken(未知来源)E/GoogleAuthUtil(4696) :at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
任何这个问题的解决方案?任何帮助将不胜感激.
access-token ×10
oauth-2.0 ×3
git ×2
oauth ×2
android ×1
angularjs ×1
deadlock ×1
express ×1
facebook ×1
github ×1
google-plus ×1
javascript ×1
jwt ×1
node.js ×1
passport.js ×1
php ×1
rest ×1
spring ×1
windows ×1
yii ×1