ユーザーのLinkedInプロフィール写真を簡単に取得する方法はありますか?
Facebookを使用するのと理想的には似ています- http://graph.facebook.com/userid/picture
それほど簡単ではありません... OAuthを使用する必要があります。その後、メンバーに代わって、以下を要求します。
http://api.linkedin.com/v1/people/{user-id}/picture-url
次の呼び出しで元の写真サイズを取得できます。
http://api.linkedin.com/v1/people/~/picture-urls ::(original)
これは任意のサイズである可能性があるので、あなたの側でスケーリングを行う必要がありますが、画像はユーザーがアップロードした元の画像です。
Linkedinuser authenticationOAuth 2.xを使用)が完了したら、人々のURLにリクエストを行います。
どこ~
は、現在の認証済みユーザーを表します。応答は次のようになります...
{
"id": "KPxRFxLxuX",
"emailAddress": "[email protected]",
"firstName": "John",
"lastName": "Doe",
"formattedName": "John Doe",
"pictureUrl": "https://media.licdn.com/mpr/mprx/0_0QblxThAqcTCt8rrncxxO5JAr...cjSsn6gRQ2b"
}
お役に立てれば!
APIの2.0バージョンを使用する場合(すべての開発者が2019年3月1日までに移行する必要がある)、プロジェクションを使用して_profilePicture.displayImage
_。これを行うと、必要なすべての情報を含む完全なJSON要素_displayImage~
_(「〜」はタイプミスではありません)がprofilePicture
内にあります。
https://api.linkedin.com/v2/me?projection=(id,profilePicture(displayImage~:playableStreams))
詳細については、 Profile Picture API doc でJSONレスポンスを確認するか、 Profile API doc 。
私はソリューションでOWINを使用しているため、ユーザーがアプリケーションでLinkedInの資格情報を使用できるようにした後、URLへのシンプルで単純なGETリクエスト https://api.linkedin.com/v1/people/~:(picture-url) ?format = json 前に説明したように、リクエストヘッダーのBearer承認で問題を解決しました。
私のStartup.Auth.csファイル
var linkedInOptions = new LinkedInAuthenticationOptions()
{
ClientId = [ClientID],
ClientSecret = [ClientSecret],
Provider = new LinkedInAuthenticationProvider()
{
OnAuthenticated = (context) =>
{
// This is the access token received by your application after user allows use LinkedIn credentials
context.Identity.AddClaim(new Claim(
"urn:linkedin:accesstoken", context.AccessToken));
context.Identity.AddClaim(new Claim(
"urn:linkedin:name", context.Name));
context.Identity.AddClaim(new Claim(
"urn:linkedin:username", context.UserName));
context.Identity.AddClaim(new Claim(
"urn:linkedin:email", context.Email));
context.Identity.AddClaim(new Claim(
"urn:linkedin:id", context.Id));
return Task.FromResult(0);
}
}
};
app.UseLinkedInAuthentication(linkedInOptions);
LinkedInでユーザーのプロフィール写真を取得する私の方法:
public string GetUserPhotoUrl(string accessToken)
{
string result = string.Empty;
var apiRequestUri = new Uri("https://api.linkedin.com/v1/people/~:(picture-url)?format=json");
using (var webClient = new WebClient())
{
webClient.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + accessToken);
var json = webClient.DownloadString(apiRequestUri);
dynamic x = JsonConvert.DeserializeObject(json);
string userPicture = x.pictureUrl;
result = userPicture;
}
return result;
}
最後に、上記のメソッドを使用する私のアクションのスニペット:
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
...
var externalIdentity = HttpContext.GetOwinContext().Authentication.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);
string accessToken =
externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:accesstoken").Value;
model.PhotoUrl = GetUserPhotoUrl(accessToken);
...
}
それが役立つことを願っています。宜しくお願いします
これは私にとってはうまくいきます!
説明-
これは、他のすべてのデータを含むサムネイル用です-
_https://api.linkedin.com/v1/people/~:(id,location,picture-urls::(original),specialties,public-profile-url,email-address,formatted-name)?format=json
_
これは、他のすべてのデータを含む元の画像用です-
_https://api.linkedin.com/v1/people/~:(id,location,picture-url,specialties,public-profile-url,email-address,formatted-name)?format=json
_
_picture-url
_の代わりにpicture-urls::(original)
を使用してください!
これは現在 Gradbee で使用されています
Linkedinにログインすると、accesstokenが取得されます。そのアクセストークンを使用すると、ユーザーデータを取得できます
LinkedInApiClient client = factory.createLinkedInApiClient(accessToken);
com.google.code.linkedinapi.schema.Person person = client.getProfileForCurrentUser(EnumSet.of(
ProfileField.ID, ProfileField.FIRST_NAME, ProfileField.LAST_NAME, ProfileField.HEADLINE,
ProfileField.INDUSTRY, ProfileField.PICTURE_URL, ProfileField.DATE_OF_BIRTH,
ProfileField.LOCATION_NAME, ProfileField.MAIN_ADDRESS, ProfileField.LOCATION_COUNTRY));
String imgageUrl=person.getPictureUrl();
あなたの目標が単にあなたのサイトに写真を表示することであるなら、LinkedIn メンバープロファイルプラグイン はあなたのためにうまくいくかもしれません。写真、追加情報、LinkedInブランディングが表示されます。
LinkedIn APIは 現在ログインしているユーザー の代わりにのみ使用されるように設計されているため、facebook graph apiと同様の機能は提供しません。
これは私の解決策であり、非常にうまく機能します:
def callback(self):
self.validate_oauth2callback()
oauth_session = self.service.get_auth_session(
data={'code': request.args['code'],
'grant_type': 'authorization_code',
'redirect_uri': self.get_callback_url()},
decoder=jsondecoder
)
me = oauth_session.get('people/~:(id,first-name,last-name,public-profile-url,email-address,picture-url,picture-urls::(original))?format=json&oauth2_access_token='+str(oauth_session.access_token), data={'x-li-format': 'json'}, bearer_auth=False).json()
social_id = me['id']
name = me['firstName']
surname = me['lastName']
email = me['emailAddress']
url = me['publicProfileUrl']
image_small = me.get('pictureUrl', None)
image_large = me.get('pictureUrls', {}).get('values', [])[0]
return social_id, name, surname, email, url, image_small, image_large, me
これは、あなたが求めているものとはまったく異なるかもしれませんが、個々の調査には役立ちます。
Firefoxでページを呼び出し、背景画像の上にあるメニューを左クリックします。 Inspect Element(Q)を選択します。
これは、img要素のid属性の終わりになります。そのimg要素のsrc属性は、背景画像のURLになります。
私にとってこれはうまくいく
image= auth.extra.raw_info.pictureUrls.values.last.first
omniauth-linkedin gemを使用