web-dev-qa-db-ja.com

LinkedInプロフィール画像の取得

ユーザーのLinkedInプロフィール写真を簡単に取得する方法はありますか?

Facebookを使用するのと理想的には似ています- http://graph.facebook.com/userid/picture

47
George Wiscombe

それほど簡単ではありません... OAuthを使用する必要があります。その後、メンバーに代わって、以下を要求します。

http://api.linkedin.com/v1/people/{user-id}/picture-url

33

次の呼び出しで元の写真サイズを取得できます。

http://api.linkedin.com/v1/people/~/picture-urls ::(original)

これは任意のサイズである可能性があるので、あなたの側でスケーリングを行う必要がありますが、画像はユーザーがアップロードした元の画像です。

51
Rahim Basheer

Linkedinuser authenticationOAuth 2.xを使用)が完了したら、人々のURLにリクエストを行います。

https://api.linkedin.com/v1/people/~:(id、email-address、first-name、last-name、formatted-name、picture-url)?format = json

どこ~は、現在の認証済みユーザーを表します。応答は次のようになります...

{
  "id": "KPxRFxLxuX",
  "emailAddress": "[email protected]",
  "firstName": "John",
  "lastName": "Doe",
  "formattedName": "John Doe",
  "pictureUrl": "https://media.licdn.com/mpr/mprx/0_0QblxThAqcTCt8rrncxxO5JAr...cjSsn6gRQ2b"
}

お役に立てれば!

10
Madan Sapkota

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

9
ccoloma

私はソリューションで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);
   ...
}

それが役立つことを願っています。宜しくお願いします

6
diegosousa88

これは私にとってはうまくいきます!

説明-

これは、他のすべてのデータを含むサムネイル用です-

_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 で使用されています

4
arora

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();
2
Kimmi Dhingra

あなたの目標が単にあなたのサイトに写真を表示することであるなら、LinkedIn メンバープロファイルプラグイン はあなたのためにうまくいくかもしれません。写真、追加情報、LinkedInブランディングが表示されます。

LinkedIn APIは 現在ログインしているユーザー の代わりにのみ使用されるように設計されているため、facebook graph apiと同様の機能は提供しません。

1
Hoodah

これは私の解決策であり、非常にうまく機能します:

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
1
piezzoritro

これは、あなたが求めているものとはまったく異なるかもしれませんが、個々の調査には役立ちます。

Firefoxでページを呼び出し、背景画像の上にあるメニューを左クリックします。 Inspect Element(Q)を選択します。

これは、img要素のid属性の終わりになります。そのimg要素のsrc属性は、背景画像のURLになります。

0
Robin Hodson

私にとってこれはうまくいく

image= auth.extra.raw_info.pictureUrls.values.last.first

omn​​iauth-linkedin gemを使用

0
sparkle