【问题标题】:Using oauth2_access_token to get connections in linkedIn使用 oauth2_access_token 获取linkedIn中的连接
【发布时间】:2013-11-05 23:11:30
【问题描述】:

我正在尝试使用他们的 API 获取linkedIn 中的连接,但是当我尝试检索连接时,我收到了 401 未经授权的错误。

在官方文档中说

您必须使用访问令牌来代表authenticated call 一个用户

进行 API 调用您现在可以使用此 access_token 代表该用户进行 API 调用,方法是附加 “oauth2_access_token=access_token”在您的 API 调用结束时 想做。

我正在尝试执行的 API 调用如下

错误 --> http://api.linkedin.com/v1/people/~/connections:(id,headline,first-name,last-name)?format=json&oauth2_access_token=access_token

我已尝试使用以下端点进行此操作,没有任何问题。

好的 --> https://api.linkedin.com/v1/people/~:(id,first-name,last-name,formatted-name,date-of-birth,industry,email-address,location,headline,picture-urls::(original))?format=json&oauth2_access_token=access_token

此处描述了连接 API 的端点列表 http://developer.linkedin.com/documents/connections-api 我只是从那里复制并粘贴了一个端点,所以问题是获取连接的端点有什么问题?我错过了什么?

编辑: 对于我正在使用的 preAuth Url

https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=ConsumerKey&scope=r_fullprofile%20r_emailaddress%20r_network&state&state=NewGuid&redirect_uri=Encoded_Url

https://www.linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&code=QueryString_Code&redirect_uri=EncodedCallback&client_id=ConsummerKey&client_secret=ConsumerSecret

请在附件中找到请求权限的登录屏幕

编辑2: 切换到 https 并像魅力一样工作!

【问题讨论】:

  • 切换到 HTTPS 也摆脱了这个错误

标签: api oauth-2.0 linkedin


【解决方案1】:

访问令牌是为特定的scope 颁发的,该scope 描述了您请求的权限范围。当您启动身份验证事务时,您添加了一个特定参数(称为 scope),该参数请求用户同意访问您想要的内容(在本例中为他们的连接)。如果我没记错的话,在 LinkedIn 中是r_network

在此处查看他们的文档:http://developer.linkedin.com/documents/authentication#granting

所以,你的电话完全没问题,但很可能你的 access_token 没有足够的权限。

【讨论】:

  • 感谢您的回复!请看看我的更新!我确实在使用 r_netowrk!
  • 知道了!我只是将 url 复制并粘贴到 broser 中得到了需要 ssl 的例外! XD只是一个小细节!切换到 https 并工作!
  • LinkedIn 是否提供 API(公开或在合作伙伴计划中)以获取所有联系人(主要是第一个)?以前他们提供此类 API,但在 2015 年,他们撤销了该 API。
【解决方案2】:
apiHelper.getRequest(getActivity(),"https://api.linkedin.com/v1/people/~/connections?modified=new", new ApiListener() {
        @Override
        public void onApiSuccess(ApiResponse response) {
        }

        @Override
        public void onApiError(LIApiError error) {
        }
    });

如果您尝试使用 LinkedIn SDK for android 来获取用户连接,例如上面的 sn-p,

在此类 com.linkedin.platform.utils.Scope 中检查 SDK 中的权限。

确保在构建范围时 r_network 可用。示例

    public static final LIPermission R_NETWORK = new LIPermission("r_network", "Your network");

现在可以像这样用于构建作用域

Scope.build(Scope.R_BASICPROFILE, Scope.R_EMAILADDRESS, Scope.W_SHARE, Scope.R_FULLPROFILE, Scope.R_CONTACTINFO, Scope.R_NETWORK)

【讨论】:

    猜你喜欢
    • 2015-04-24
    • 2015-10-26
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2015-05-20
    相关资源
    最近更新 更多