【发布时间】:2017-05-01 07:38:45
【问题描述】:
我在linkedIn 中创建了一个API 应用程序,所以我得到了client-id 和client-secret 密钥。但是,我无法从 LinkedIn 获取访问令牌和密钥。
我已经使用下面的 python 代码来完成这项工作。一切正常,我得到了“authorization_url”,但是当我将它粘贴到浏览器中时出现错误:“redirect_uri 无效。此值必须与使用 API 密钥注册的 URL 匹配。”
*** 请注意,目前我的应用程序中的“授权重定向 URL”部分是空白的,我的问题是我应该放什么?我知道它应该与我在下面的代码中提供的 OAuth2Session 函数(而不是“arbitrary_url”,例如“http://127.0.0.1”)相同。但是不知道从哪里得到这个网址?
Snapshot of my authorization_url page
*** 逐步澄清我到底在做什么: 1) 在我的 API 应用程序的“授权重定向 URL”文本框中添加一个 URL,然后单击“添加”。 2)然后我用完全相同的url替换我的代码中的“arbitrary_url”。 3)继续运行我的代码以获取“redirect_response”。 4)在我的浏览器中尝试“redirect_response”;到目前为止,我总是收到错误:“无效的 redirect_uri。此值必须与使用 API Key 注册的 URL 匹配。”
不胜感激。
# Import packages
from requests_oauthlib import OAuth2Session
from requests_oauthlib.compliance_fixes import linkedin_compliance_fix
# Credentials you get from registering a new application
client_id = '<my client id>'; client_secret = '<my client secret>'
# Redirect user to LinkedIn for authorization
linkedin = OAuth2Session(client_id, redirect_uri='<arbitrary_url>')
linkedin = linkedin_compliance_fix(linkedin)
authorization_url, state = linkedin.authorization_url('https://www.linkedin.com/uas/oauth2/authorization')
print(authorization_url)
最后我在第一阶段弄错了!我缺少的是我需要在我的应用程序中单击“添加”后单击“更新”才能实际执行该添加! 但是,仍然没有获得客户端 ID 和客户端密码,因为我在授权后收到错误消息!
【问题讨论】:
-
您已将
redirect_uri='http://127.0.0.1'设置为重定向网址。当您创建 API 应用程序时,您提供的重定向 url 是什么?您应该在此处提供相同的 url 以获得正确的 auth_url。 -
非常感谢@Venkatesh 抽出宝贵时间!如前所述,我只在linkedin.com/developer 中的应用程序中获得了客户端ID 和客户端密钥,并且不知道要在我的应用程序的“授权重定向URL”部分添加什么。我可以在文档中看到它应该采用这种格式:“example.com/auth/linkedin”。关于我应该在那里添加什么网址的任何想法或建议?我怎样才能得到那个网址?
-
一般您可以添加任何内容,例如:
https://www.example.com/auth/linkedin。如果您不知道该给什么,请提供一些有用的东西,例如http://localhost:8080。在那里运行一些东西,以便您知道在身份验证后是否能够成功到达那里。在您的 python 代码中,您应该具有相同的值。您可以在任何 Oauth 应用程序中拥有多个重定向网址。 -
再次感谢。我已经尝试了您提供的示例以及第三个示例:“localhost:8080/auth/linkedin”。他们都没有工作,我仍然收到错误:“无效的redirect_uri。此值必须与使用API Key注册的URL匹配”。
-
您能否分享您的linkedIn 应用程序配置的重定向网址截图,如link 所述?我相信您提供的重定向 URL 与应用程序中配置的相同。另外,请通过删除 client_id 和 client_secret 粘贴您的最终
authorization_url。
标签: api oauth authorization python-3.5 linkedin-api