如何在 Linkedin API 中请求直接赞助内容发布者角色?
How to Request Direct Sponsored Content Poster Role in Linkedin API?
当我尝试发出 GET
请求使成员成为组织的直接赞助内容发布者角色时,我收到 404 错误。
因此,在示例 here 之后,我使用的是组织 ID,我使用的是我要将 ID 添加到 URL 请求的人员。所以我的代码如下所示:
sendRequest(GET, "https://api.linkedin.com/v2/organizationAcls/" + URLEncoder.encode("(organization:urn:li:organization:" + organization + ",role:DIRECT_SPONSORED_CONTENT_POSTER,roleAssignee:urn:li:person:" + roleAssignee +")" , StandardCharsets.UTF_8.toString()), null);
使用sendRequest
方法:
public String sendRequest(String method, String url, String parameters) throws ExternalApiException, IOException{
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
// add request header
con.setRequestMethod(method);
con.setRequestProperty("Authorization", "Bearer " + token);
if (method == POST)
//Removed POST logic as its irrelevant
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
}
最后,URL post编码的例子如下,organization = 1234567
AND roleAssignee = abcDEfg
:
https://api.linkedin.com/v2/organizationAcls/%28organization%3Aurn%3Ali%3Aorganization%3A1234567%2Crole%3ADIRECT_SPONSORED_CONTENT_POSTER%2CroleAssignee%3Aurn%3Ali%3Aperson%3AabcDEfg%29
更新 1 (11/10/2020):也想添加返回的响应正文。如前所述,错误代码是 404
并且返回的响应正文是:
{"serviceErrorCode":0,"message":"Resource organizationAcls does not exist","status":404}
所以我与 Linkedin 技术支持成员交谈,他们的文档中似乎有错误。
正确的调用需要 PUT
请求。
此外,请求的 URL 是:https://api.linkedin.com/v2/organizationAcls/(organization:urn%3Ali%3Aorganization%3AXXXXXXX,role:DIRECT_SPONSORED_CONTENT_POSTER,roleAssignee:urn%3Ali%3Aperson%3AXXXXXXX)。
其中 'XXXXXXX' 需要是关联的组织 ID 和关联的人员 ID。
最后,作为请求的一部分,需要传入一个请求体。请求体是一个JsonObject
,包含以下属性。
state
role
roleAssignee
organization
对于 state
,唯一可能的值是 REQUESTED
。
对于 role
,唯一可能的值是 DIRECT_SPONSORED_CONTENT_POSTER
。
对于 role assignee
,它是 "urn:li:person:" + roleAssignee
,您希望使用添加到以下组织的用户的 ID。
最后,对于 organization
,它是 "urn:li:organization:" + organization
,您希望将上述用户添加到的组织的 ID。
当我尝试发出 GET
请求使成员成为组织的直接赞助内容发布者角色时,我收到 404 错误。
因此,在示例 here 之后,我使用的是组织 ID,我使用的是我要将 ID 添加到 URL 请求的人员。所以我的代码如下所示:
sendRequest(GET, "https://api.linkedin.com/v2/organizationAcls/" + URLEncoder.encode("(organization:urn:li:organization:" + organization + ",role:DIRECT_SPONSORED_CONTENT_POSTER,roleAssignee:urn:li:person:" + roleAssignee +")" , StandardCharsets.UTF_8.toString()), null);
使用sendRequest
方法:
public String sendRequest(String method, String url, String parameters) throws ExternalApiException, IOException{
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
// add request header
con.setRequestMethod(method);
con.setRequestProperty("Authorization", "Bearer " + token);
if (method == POST)
//Removed POST logic as its irrelevant
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
}
最后,URL post编码的例子如下,organization = 1234567
AND roleAssignee = abcDEfg
:
https://api.linkedin.com/v2/organizationAcls/%28organization%3Aurn%3Ali%3Aorganization%3A1234567%2Crole%3ADIRECT_SPONSORED_CONTENT_POSTER%2CroleAssignee%3Aurn%3Ali%3Aperson%3AabcDEfg%29
更新 1 (11/10/2020):也想添加返回的响应正文。如前所述,错误代码是 404
并且返回的响应正文是:
{"serviceErrorCode":0,"message":"Resource organizationAcls does not exist","status":404}
所以我与 Linkedin 技术支持成员交谈,他们的文档中似乎有错误。
正确的调用需要 PUT
请求。
此外,请求的 URL 是:https://api.linkedin.com/v2/organizationAcls/(organization:urn%3Ali%3Aorganization%3AXXXXXXX,role:DIRECT_SPONSORED_CONTENT_POSTER,roleAssignee:urn%3Ali%3Aperson%3AXXXXXXX)。 其中 'XXXXXXX' 需要是关联的组织 ID 和关联的人员 ID。
最后,作为请求的一部分,需要传入一个请求体。请求体是一个JsonObject
,包含以下属性。
state
role
roleAssignee
organization
对于 state
,唯一可能的值是 REQUESTED
。
对于 role
,唯一可能的值是 DIRECT_SPONSORED_CONTENT_POSTER
。
对于 role assignee
,它是 "urn:li:person:" + roleAssignee
,您希望使用添加到以下组织的用户的 ID。
最后,对于 organization
,它是 "urn:li:organization:" + organization
,您希望将上述用户添加到的组织的 ID。