我已经仔细阅读了有关API调用的LinkedIn开发人员文档,在文档之后,我能够请求访问代码,与服务器进行交换并设法获得访问令牌。
此后,我设法通过以下代码使用json格式的访问令牌来获取一些成员的个人资料。
ToList()
无论如何,问题是:尝试进行任何不同的呼叫都将失败,尽管它们是根据LinkedIn的文档进行的,并且允许它们用于r_basicprofile,但仍然存在错误:
警告: file_get_contents(https://api.linkedin.com/v2/people/~:(industryId~)?format=json): 无法打开流:HTTP请求失败! HTTP / 1.0 403禁止
我尝试了以下一些方法,但是没有正确的方法
$api_url = 'https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address)?format=json';
$context = stream_context_create(array(
'http' => array(
'header' => "Authorization: Bearer " . $accessToken
),
));
$result = file_get_contents($api_url, false, $context);
echo $result;
我什至尝试通过以下GET请求获取memeber的个人资料,但返回了相同的403。
https://api.linkedin.com/v2/people/(id:{个人ID})
https://api.linkedin.com/v2/people/(id:{profileID})?projection = {id,firstName,lastName,industryId〜)
很高兴了解如何拨打电话以及出了什么问题。
答案 0 :(得分:0)
问题在于,V2 API要求您与linkedin建立伙伴关系。这表示您收到403禁止的错误。
与LinkedIn的合作为您提供了其他API 功能和数据访问,增加的通话限制和专用 支持。详细了解我们的各种合作伙伴计划和用例 并查看是否适合您的应用。仅接受申请 当我们认为他们正在为成员,开发人员和 领英。
来源: https://developer.linkedin.com/partner-programs
很高兴为您提供所需的api的V1版本。
https://api.linkedin.com/v1/people/{ID}?format=json
答案 1 :(得分:0)
将LinkedIN JS SDK添加到您的网站,应该看起来像这样:
var LinkedINJSAPI = {
onLoad: function(){
IN.User.authorize(LinkedINJSAPI.request, this );
},
request: function(){
var url = 'people/~:(firstName,lastName,emailAddress,positions,location)?format=json';
IN.API.Raw(url).
method('GET').
result(function(result){
console.log( JSON.stringify( result ) );
}).
error(function(error){
console.error( error.message );
});
}
}
然后在您的JavaScript中添加以下内容:
public static void makeTextViewResizable(final TextView tv, final int maxLine, final String expandText, final boolean viewMore) {
if (tv.getTag() == null) {
tv.setTag(tv.getText());
}
ViewTreeObserver vto = tv.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@SuppressWarnings("deprecation")
@Override
public void onGlobalLayout() {
ViewTreeObserver obs = tv.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
if (maxLine == 0) {
int lineEndIndex = tv.getLayout().getLineEnd(0);
String text = tv.getText().subSequence(0, lineEndIndex - expandText.length() + 1) + " " + expandText;
tv.setText(text);
tv.setMovementMethod(LinkMovementMethod.getInstance());
tv.setText(
addClickablePartTextViewResizable(Html.fromHtml(tv.getText().toString()), tv, maxLine, expandText,
viewMore), TextView.BufferType.SPANNABLE);
} else if (maxLine > 0 && tv.getLineCount() >= maxLine) {
int lineEndIndex = tv.getLayout().getLineEnd(maxLine - 1);
String text = tv.getText().subSequence(0, lineEndIndex - expandText.length() + 1) + " " + expandText;
tv.setText(text);
tv.setMovementMethod(LinkMovementMethod.getInstance());
tv.setText(
addClickablePartTextViewResizable(Html.fromHtml(tv.getText().toString()), tv, maxLine, expandText,
viewMore), TextView.BufferType.SPANNABLE);
} else {
int lineEndIndex = tv.getLayout().getLineEnd(tv.getLayout().getLineCount() - 1);
String text = tv.getText().subSequence(0, lineEndIndex) + " " + expandText;
tv.setText(text);
tv.setMovementMethod(LinkMovementMethod.getInstance());
tv.setText(
addClickablePartTextViewResizable(Html.fromHtml(tv.getText().toString()), tv, lineEndIndex, expandText,
viewMore), TextView.BufferType.SPANNABLE);
}
}
});
}
private static SpannableStringBuilder addClickablePartTextViewResizable(final Spanned strSpanned, final TextView tv,
final int maxLine, final String spanableText, final boolean viewMore) {
String str = strSpanned.toString();
SpannableStringBuilder ssb = new SpannableStringBuilder(strSpanned);
if (str.contains(spanableText)) {
ssb.setSpan(new MySpannable(false){
@Override
public void onClick(View widget) {
if (viewMore) {
tv.setLayoutParams(tv.getLayoutParams());
tv.setText(tv.getTag().toString(), TextView.BufferType.SPANNABLE);
tv.invalidate();
makeTextViewResizable(tv, -1, "See Less", false);
} else {
tv.setLayoutParams(tv.getLayoutParams());
tv.setText(tv.getTag().toString(), TextView.BufferType.SPANNABLE);
tv.invalidate();
makeTextViewResizable(tv, 3, ".. See More", true);
}
}
}, str.indexOf(spanableText), str.indexOf(spanableText) + spanableText.length(), 0);
}
return ssb;
}
您可以在这里看到有效的演示...