使用oauth2_access_token在linkedIn中获取连接

时间:2013-10-27 00:41:23

标签: api oauth-2.0 linkedin

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

在官方文件中说

  

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

     

进行API调用您现在可以使用此access_token通过附加代表此用户进行API调用   您在API调用结束时“oauth2_access_token = access_token”   希望成为。

我正在尝试的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 &安培;范围= r_fullprofile%20r_emailaddress%20r_network&安培;状态&安培;状态= 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

请找到附加请求权限的登录屏幕

enter image description here

EDIT2: 切换到https并像魅力一样工作!

2 个答案:

答案 0 :(得分:4)

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

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

因此,您的通话完全没问题,但您的 access_token 很可能没有足够的权限。

答案 1 :(得分: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获取用户连接,请参阅上面的代码段

在此类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)