我知道有些人会发表评论,比如这篇文章重复了很多问题,但是我已经尝试了很多方法来在领英Oauth中实现访问令牌。解释我所尝试的。
1)我正在关注它的官方文档LinkedIn Oauth2
2) 我已成功从步骤 2 获取授权代码,并将该代码传递给步骤 3,以交换身份验证代码以获取访问令牌。但是我收到以下错误{“error_description”:“缺少必需参数,包含无效的参数值,参数不止一次。 :无法检索访问令牌:appId 或重定向 URI 与授权代码不匹配或授权代码已过期”,“错误”:“invalid_request”}
3)根据一些链接,我需要在标题中设置内容类型。告知设置内容类型的链接丢失
4)然后我尝试调用https://www.linkedin.com/uas/oauth2/accessToken
此服务而不是POSt
到GET
。并将数据作为queryParams传递。
5) 有些链接说oauth代码在20秒内过期,所以我已经检查过了,我正在不到1秒的时间内调用访问令牌。
6)如果我像下面这样在正文参数中传递数据并使用url作为 https://www.linkedin.com/uas/oauth2/accessToken
var postData = {
grant_type: "authorization_code",
code: authCode,
redirect_uri: 'https%3A%2F%2Foauthtest-mydeployed-app-url',
client_id: 'my_client_id',
client_secret: 'secret_key'
};
7)使用获取
调用我的url,我尝试了https://www.linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code
即使状态代码是200,我仍然得到错误,我得到了那个错误(使用
GET
api)并且如果POSt
通过在正文中传递postData
我得到了错误的请求400
状态代码
不明白为什么我得不到密码。我看过很多解决方案。按要求共享代码。
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/m/MessageToast"
], function (Controller, MessageToast) {
"use strict";
return Controller.extend("OauthTest.OauthTest.controller.View1", {
onPress: function (evt) {
var sPath =
'https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=my_client_id&redirect_uri=https%3A%2F%2Foauthtest-mydeployed-app-url&state=DCEeFWf45A53sdfKef424&scope=r_basicprofile';
window.location.href = sPath;
var oRouter = new sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("View2", {
"username": "Test"
});
MessageToast.show(evt.getSource().getId() + " Pressed");
},
//after user allows access, user will be redirected to this app with code and state in URL
//i'm fetching code from URL in below method(call is happening in max.569ms)
onAfterRendering: function () {
var currentUrl = window.location.href;
var url = new URL(currentUrl);
var authCode = url.searchParams.get("code");
if (authCode !== undefined && authCode !== null) {
var postData = {
grant_type: "authorization_code",
code: authCode,
redirect_uri: 'https%3A%2F%2Foauthtest-mydeployed-app-url',
client_id: 'my_client_id',
client_secret: 'secret_key'
};
/* var accessTokenUrl = 'https://www.linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&code=' + authCode +'&redirect_uri=https%3A%2F%2Foauthtest-mydeployed-app-url&client_id=my_client_id&client_secret=secret_key';*/
var accessTokenUrl = 'https://www.linkedin.com/uas/oauth2/accessToken';
$.ajax({
url: accessTokenUrl,
type: "POST",
beforeSend: function (xhr) {
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
},
data: postData,
success: function (data, textStatus, jqXHR) {
console.log(data);
alert('success');
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
alert('error');
}
});
}
}
});
});
将获得帮助..!!!
最后,我很高兴在经过如此多的搜索后发布我的答案。我所做的每一步都是正确的,但我在这里缺少一件事,例如LinkedIn API 不支持 CORS。
我尝试实现Javascript SDK,这很有魅力。但API不是。然后我发现非常有用的Link说我需要通过允许CORS从后端实现Rest API,而不是从前端。
确保遵循我在帖子中提到的所有要点。对于允许CORS,请点击此链接。您将获得数据,但只能访问根据LinkedIn条款提供的用户基本资料
希望这篇文章能帮助一些人有时间搜索更多
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=your_app_client_id&response_type=code&redirect_uri=https%3a%2f%2flogin.microsoftonline.com%2fcommon%2foauth2%2fnativeclient&res
我试图使用从Spring应用程序中的公共客户端获取访问令牌。 谁能帮我弄清楚我做错了什么吗?
当且仅当用户在发出OAuth2请求时登录到LinkedIn时,它才起作用。 如果用户未登录,则会遇到错误。 我们的行动顺序: 成功获取新的访问令牌 使用访问令牌,发布到apiendpoint 之后,我们将收到一份401,内容如下: 有时,经过一段时间后,使用相同的访问令牌重试会得到200。有时不会。 如果用户在“401期间”登录LinkedIn,那么之前获取的访问令牌就会神奇地开始工作。 我不知道
目前访问类型处于联机状态。当我需要访问驱动器上的文件/文件夹时,我将浏览器重定向到Google URL并获得访问代码: 一切运转良好!但我只需要第一次重定向。 当我谷歌时,在google Drive API文档中,我发现我可以通过浏览器重定向获得刷新令牌,并将其保存在数据库中。(换句话说,我可以使用脱机访问)。 而且每次当我需要从google drive读取数据时,我使用刷新令牌获得访问令牌,而无
我得到的令牌是: http://localhost:8080/servicesmem/oauth/token?username=myuser&password=mypassword&grant_type=password&scope=read,write,trust 我得到: 我得到: 我使用头:Authorization Bearer ACCESS_TOKEN,但我得到了同样的错误。我错过了什么
我试图使用请求模块向https://accounts.spotify.com/api/token发出POST请求,以便获得访问令牌。我已经用我的Spotify开发帐户注册了重定向URI。这是我的快速<代码>/重定向 路由。 有人能看到这里可能出了什么问题吗?每次我得到的都是一个不伦不类的“哎呀!出了问题”错误页面。