1

DotNetOpenAuthを使用してアクセストークンを要求する場合、それは基本的なユーザープロファイルのみを認証します。

Authorization.BeginAuthorize();

おそらくトークンマネージャーで何かを指定することによって、ユーザーに完全なプロファイルに対して認証するように求める方法はありますか?

LinkedIn APIにPOSTを作成するときに、スコープパラメーターを追加することは知っていますが、DotNetOpenAuthとLinkedIn Developer Toolkitを使用してこれを行う方法はありますか?

https://api.linkedin.com/uas/oauth/requestToken?scope=r_fullprofile

また、LinkedIn Developer Toolkitには、完全なプロファイルの多くのProfileField列挙型があるため、この方法でアクセスできると思います。例えば

ProfileField.Industry

ProfileField.ThreeCurrentPositions

4

1 に答える 1

2

私もこれを行う方法を探していました。LinkedIn Developer Toolkit を拡張する必要があります。

ソースをダウンロード

次の関数オーバーロードを追加しますWebOAuthAuthorization.cs

public void BeginAuthorize(Uri callback, IDictionary<string, string> requestParameters)
{
    this.Consumer.Channel.Send(this.Consumer.PrepareRequestUserAuthorization(callback, requestParameters, null));
}

それをコンパイルし、プロジェクトに参照を追加します (NuGet パッケージを使用していた場合は削除します)。次に、次のようにコードから呼び出すことができます。

WebOAuthAuthentication webAuth = new WebOAuthAuthentication(LinkedInTokenManager, null);
Uri callback = new Uri("http://your.callback.uri");
Dictionary<string, string> requestParameters = new Dictionary<string, string>();
requestParameters.Add("scope", "r_fullprofile r_network");
webAuth.BeginAuthorize(callback, requestParameters);

2番目の質問については、プロファイル フィールド ENUM は、GetCurrentUserメソッド (およびおそらく他のもの) に渡して、返すフィールドを指定するためのものです。たとえば、

LinkedInService li = new LinkedInService(webAuth);
List<ProfileField> fields = new List<ProfileField>();
fields.Add(ProfileField.ThreeCurrentPositions);
fields.Add(ProfileField.Industry);
Person person = li.GetCurrentUser(ProfileType.Standard, fields);

これらのフィールドは、Personオブジェクトでアクセス可能になります (指定しないフィールドは null です)。

于 2012-09-15T18:02:04.613 に答える