我正在尝试使用他们的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
请找到附加请求权限的登录屏幕
EDIT2: 切换到https并像魅力一样工作!
答案 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)