2

私はハンモックライブラリとC#を使用して、次の投稿にリンクされているユーザーの基本的なプロファイルと電子メールアドレスを取得しています

私もここここでこれらの投稿をフォローしました

しかし、私の一生の間、LinkedInユーザーのメールアドレスを取得することはできません。

このLinkedInの投稿を読んで、新しいキーを取得するための新しいアプリケーションを作成しましたが、それでも運がありません。

このLinkedInの投稿を通過しましたが、機能させることもできませんでした

私は以下のコードを投稿していますが、私がたどったリンクから大幅に持ち上げられています

var credentials = new OAuthCredentials
            {

                CallbackUrl = "http://localhost:2715/Callback.aspx",

                ConsumerKey = "my consumer key",//not shown

                ConsumerSecret = "my consumer secret",//not shown

                Type = OAuthType.RequestToken,

            };


        var client = new RestClient
            {
                Authority = "https://api.linkedin.com/uas/oauth",
                Credentials = credentials
            };

        //var scope = HttpUtility.UrlEncode("r_basicprofile r_emailaddress");

        var request = new RestRequest
                        {
                            Path = "requestToken?scope=r_basicprofile+r_emailaddress",
                        };

ユーザーがLinkedInに移動すると、この画面が表示されます。

ここに画像の説明を入力してください

実際にメールをリクエストするには、以下のコードを使用します

 var request = new RestRequest { Path = "people/~/email-address" };

        var credentials = new Hammock.Authentication.OAuth.OAuthCredentials

        {

            Type = OAuthType.AccessToken,

            SignatureMethod = OAuthSignatureMethod.HmacSha1,

            ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader,

            ConsumerKey = "my consumer key", //not shown

            ConsumerSecret = "my consumer secret", //not shown

            Token = Session["AccessToken"].ToString(),

            TokenSecret = Session["AccessSecretToken"].ToString(),

            Verifier = Session["Verifier"].ToString()

        };


        var client = new RestClient()
        {
            Authority = "http://api.linkedin.com/v1/",
            Credentials = credentials,
            Method = WebMethod.Get
        };


        var MyInfo = client.Request(request);

        String content = MyInfo.Content;

これは、MyInfo.Contentで発生するエラーです。

ここに画像の説明を入力してください

よろしくお願いします。

Kamyarの提案を試してみると、次のエラーメッセージが表示されます。他に何を試すべきですか?

ここに画像の説明を入力してください

4

6 に答える 6

2

承認時に「r_emailaddress」権限を要求する限り、認証されたユーザーは電子メールアドレスにアクセスできます。

アプリケーションを承認するためにユーザーに表示されるOauthログインダイアログを見てください。「電子メールアドレス」が、アプリケーションがアクセスするプロファイルフィールドの1つとして表示されていないことに注意してください。コード内の次の行を変更する必要があります。

var request = new RestRequest
                        {
                            Path = "requestToken?scope=r_basicprofile+r_emailaddress",
                        };

これに:

var request = new RestRequest
                        {
                            Path = "requestToken?scope=r_basicprofile%20r_emailaddress",
                        };

スペースは、リクエストトークンパスでURLエンコードされている必要があります。

ありがとう、Kamyar Mohager

于 2012-10-12T17:51:46.660 に答える
1

更新:LinkedInはAPIを更新し、通常のAPIでメールアドレスを取得できるようになりました。

于 2012-10-17T02:21:49.147 に答える
1

JavaScriptを使用して、ヘッドエリアに次のように表示されます。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="http://platform.linkedin.com/in.js">
  api_key: put-your-api-key-here
    authorize: true
    scope: r_basicprofile r_emailaddress
</script>
<script type="text/javascript">

function loadData() {
    IN.API.Profile("me")
        .fields(["firstName","lastName","id","emailAddress"])
        .result(function(result) {
                //$("#profile").html(JSON.stringify(result))
                $("#profile").html(JSON.stringify(result))
        });
}

</script>

そして体に私は以下を入れました:

<div id="profile">
</div>
<script type="IN/Login" data-onAuth="loadData"></script>
于 2012-11-06T23:51:59.183 に答える
1

私は解決策を見つけました。単純に、RestRequestの.Pathプロパティに?scope = r_emailaddres(またはその他の権限)を含めないでください。次のようなものを使用します。

Dim request = New RestRequest With {.Path = "requestToken"}
request.AddParameter("scope", "r_emailaddress")

(vbネット構文)

.AddParameterメソッドが重要です。

于 2012-11-26T07:49:55.043 に答える
0

私はこれを調査するのに何日も費やしましたが、悲しいことに、LinkedInは、パートナー契約(Microsoftなど)がない限り、APIを介してユーザーの電子メールアドレスを公開しないことがわかりました。

これを知っているあなたのオプションは、LinkedInをOpenId / OAuthプロバイダーとして使用し、認証されたら、希望する電子メールアドレスを尋ねることです。

于 2012-10-12T13:47:21.433 に答える
0

DotNetOpenAuthApiとgoogledotnetopenauthグループで見つけたLinkedInConsumerクラスを使用して、ようやくメールアドレスを取得しました。

于 2012-11-01T06:21:36.413 に答える