首先,我向那些可能认为此问题不适合在StackOverflow上发布此问题的StackOverflow用户致歉。
即使这是针对Linkedin的特定问题,但Linkedin仍希望其用户根据this page将其在线支持论坛移至StackOverflow之后,对StackOverflow上的任何技术问题提出疑问。
Linkedin似乎希望在StackOverflow中为用户管理技术支持,在该平台上,工程师会定期使用#linkedin hashtag检查问题。
这是我面临的问题:
我想使用两足式授权,因为我想将其用于Marketing Developer产品-已被批准并已添加到我的应用程序中-但在请求访问令牌后继续收到以下错误消息通过使用基于this document的Python从Linkedin API中获得。
import requests
r = requests.get('https://www.linkedin.com/oauth/v2/accessToken?grant_type=client_credentials&client_id={MY_CLIENT_ID}&client_secret={MY_CLIENT_SECRET}')
result:
<Response [401]>
r.json()
{'error': 'access_denied',
'error_description': 'This application is not allowed to create application tokens'}
r = requests.post('https://www.linkedin.com/oauth/v2/accessToken?grant_type=client_credentials&client_id={MY_CLIENT_ID}&client_secret={MY_CLIENT_SECRET}')
result:
<Response [401]>
r.json()
{'error': 'access_denied',
'error_description': 'This application is not allowed to create application tokens'}
根据我的理解,由于我的应用仅获得了三足授权,因此我需要为客户端凭据流请求其他权限。
我还检查了我的应用程序下的“验证”标签。而且只有三腿成员权限,而没有两腿应用程序权限的权限。
任何人都可以建议我如何解决此问题? -我已经在Linkedin提供的每个频道中发送了所有电子邮件。
我是否需要执行其他操作以帮助我授予此两足式权限? 还是我以错误的格式将URL发送到Linkedin API?
有人遇到过类似情况,并且在采取某种措施后最终解决了该问题吗?还是我应该等到Linkedin完全授予here所提及的一切,以便Linkedin逐步授予访问权限?
谢谢!
以下在5月22日添加
在我的用例中,我需要同时具有“ r_ads”(检索元数据)和“ r_ads_reporting”(检索度量)权限。 因此,我经历了相同的过程,一个接一个地获取每个许可,但是一旦授予一个许可的访问令牌,就撤销了另一个许可的访问令牌。
{'serviceErrorCode': 65601, 'message': 'The token used in the request has been revoked by the user', 'status': 401}
这是我获取授权码的方法:
import requests
base_url = 'https://www.linkedin.com/oauth/v2/authorization'
redirect_uri = 'MY_URL'
state = 'SOME_RANDOM_STRING'
client_id = 'MY_CLIENT_ID'
client_secret = 'MY_CLIENT_SECRET'
params = {
'response_type':'code',
'client_id':client_id,
'redirect_uri':redirect_uri,
'state':state,
'scope': ['r_ads_reporting', 'r_ads']
# or put scope parameter one by one like this
#'scope':'r_ads_reporting'
#'scope':'r_ads'
}
在我转到LinkedIn OAuth 2.0授权页面后,我能够获取将被交换为访问令牌的授权代码。
这是我获取访问令牌的方法:
base_url = 'https://www.linkedin.com/oauth/v2/accessToken'
params = {
'grant_type':'authorization_code',
'code':'CODE_FROM_PREVIOUS_STEP',
'redirect_uri':redirect_uri,
'client_id':client_id,
'client_secret':client_secret,
}
r = requests.post(base_url, params=params)
# My access token
access_token = r.json()['access_token']
现在我在此过程中有了令牌,但是,使用此令牌,我只能执行一项任务,即需要r_ads许可的任务或另一项需要r_ads_reporting许可的任务。
您能建议我如何向一个用户授予多个权限吗? 谢谢!