0

Securesocial を使用して、OAuth1 経由で Linkedin を認証し、接続されているユーザーの接続のリストを取得しようとしています。

認証は正常に機能しますが、ユーザーが接続された後に要求を呼び出すと、401 応答が返されます。私は間違っているかもしれませんが、潜在的な問題は見当たりません。

以下は、securesocial コード内で提供される Java Demo アプリに追加された単純なメソッドです。

@SecureSocial.SecuredAction ( authorization = WithProvider.class, params = {"linkedin"})
public static Result linkedinConnections(){
    Identity user = (Identity) ctx().args.get(SecureSocial.USER_KEY);        
    OAuth1Info oauthInfo = user.oAuth1Info().get();

    String url = "http://api.linkedin.com/v1/people/~/connections:(headline,first-name,last)?format=json";
    String consumerKey = SecureSocial.serviceInfoFor(user).key().key();
    String consumerSecret = SecureSocial.serviceInfoFor(user).key().secret();

    return async(
            WS.url(url)
            .sign(
                new OAuthCalculator(
                    new OAuth.ConsumerKey(consumerKey, consumerSecret), 
                    new OAuth.RequestToken(oauthInfo.token().toString(), oauthInfo.secret().toString())
                )
            )
            .get()
            .map(new Function<WS.Response, Result>() {
                public Result apply(WS.Response response) {
                    System.out.println(response);
                    return ok(response.getStatusText());
                }
            })
        );
}

どんなアイデアでも役に立ちます

よろしく、ナビル

4

1 に答える 1

0

LinkedIn で SecureSocial を使用しようとしたことはありませんが、

  • SecureSocial での認証が機能する
  • LinkedIn ユーザーのつながりを一覧表示したい
  • 独自のメソッドは常に 401 エラー (Unauthorized) を受け取ります

2 つの異なるアクセス レベルを混在させていることは明らかです。SecureSocial が実行する認証には、LinkedIn からの名前やメール アドレスなどの基本的な情報のみが必要です。次に、同じ認証トークンを使用して、LinkedIn ユーザー (その接続) の詳細情報にアクセスします。これはもちろん、LinkedIn によって拒否 (無許可) されています。これは、ユーザーが連絡先やつながりではなく、基本的なプロファイルにアクセスする許可を与えただけであるためです。

ユーザーの接続を一覧表示するためにさらに権限を取得したい場合は、SecureSocial から送信される OAuth 認証要求にスコープ情報を追加する必要があると思います。これはおそらく、モジュールのソース ファイルを編集してスコープ情報を追加する必要があることを意味します。

LinkedIn の範囲と権限については、 https: //developer.linkedin.com/documents/authentication を参照してください。LinkedIn SecureSocial コードについては、https://github.com/jaliss/securesocial/blob/master/module-code/app/securesocial/core/providers/LinkedInProvider.scalaを参照してください。

お役に立てれば。

于 2013-05-02T07:45:59.663 に答える