5

クライアントから、最新の投稿を LinkedIn グループから当社の Web サイト ページの 1 つにプルするように依頼されました。

私は ColdFusion 9 を使用して開発を行っており、これについて数日間調査してきました。誰かが私を助けてくれることを期待して、ここに質問を投稿することにしました。

requestToken を取得できるようになります。私の理解では、accessToken を取得するには、リクエスト トークンに署名する必要があります。私の問題は、これを舞台裏で行う必要があることです。ただし、私が見つけることができるすべての例は、フロントエンド ユーザーを承認 URL にリダイレクトしてユーザーを認証できるようにしていますが、ユーザーを認証させたくないので、代わりにサーバー側で認証したいと考えています。

Scribe Java ラッパー ライブラリを使用しようとしています。以下は、requestToken (および認証 URL) を取得するこれまでのコードです。Groups API を使用するために必要な呼び出しを行うことができるように、サーバー側のコードでトークンに署名する正しい方向に向けてくれる人が必要です (例: http://api.linkedin.com/v1/groups/{id}/posts?count=5&start=1)

<cfscript>
    var l = {};
    //The LinkedIn public and private keys for application
    l.oauth_consumer_key = "[My public key]";
    l.oauth_sign_key = "[My secret key]";
    l.serviceBuilder = CreateObject("java","org.scribe.builder.ServiceBuilder");
    l.LinkedInApiClass = CreateObject("java", "org.scribe.builder.api.LinkedInApi").getClass();
    l.service = l.serviceBuilder.provider(l.LinkedInApiClass).apiKey(l.oauth_consumer_key).apiSecret(l.oauth_sign_key).callback("[My callback url]").build();
    l.requestToken = l.service.getRequestToken();
    l.authUrl = l.service.getAuthorizationUrl(l.requestToken);

    // I NEED TO DEFINE WHAT TO DO AT THIS POINT TO SIGN THE REQUEST SERVER SIDE
    ...
    ...
</cfscript>
4

2 に答える 2

3

Kirsten は技術的に正しいです - Linked In Api にはユーザー認証が必要です。グループの投稿を取得するためにも認証が必要なため、面倒です。

ただし、それを回避する方法があります。

scribe を使用すると、アクセス トークンを手動で作成できます。したがって、Linked In でダミーのユーザー アカウントを作成し、そのユーザーを通常どおり認証し、返された署名付き資格情報をデータベースに保存します。これを使用してトークンを作成できます。

var accessToken = createObject("java", "org.scribe.model.Token").init(
                "singedTokenStringReturnBackFromLinkedIn",
                "singedSecretStringReturnBackFromLinkedIn",
                "oauth_token=singedTokenStringReturnBackFromLinkedIn&oauth_token_secret=singedSecretStringReturnBackFromLinkedIn&oauth_expires_in=0&oauth_authorization_expires_in=0"
            ); 

次に、認証部分をスキップして API を呼び出し、現在のユーザーがサインインしなくてもグループの投稿を表示できるようにします。

var req = createObject("java", "org.scribe.model.OAuthRequest").init(
            createObject("java", "org.scribe.model.Verb").GET,
            "http://api.linkedin.com/v1/groups/123456/posts"
        );

oAuthService.signRequest(accessToken, req);

ただし、これが Linked In の T&C に違反するかどうかはわかりません。

于 2012-03-15T19:10:31.943 に答える
2

OAuth 認証は、ユーザーがサイト (この場合は LinkedIn) へのログインを介してアプリケーションに許可を与えるように設計されています。ユーザーがアプリケーションにアクセス許可を自動的に付与するようには設計されていません。

LinkedIn API を使用するためのアクセス トークンを取得するには、ユーザーを LinkedIn に送信する認証フローの一部を含めて、ユーザーに代わって動作する許可をアプリケーションに与える必要があります。この時点で、検証トークンを取得できます。 PIN (ユーザーが入力) またはアプリケーションへのコールバックを介して。

つまり、ユーザーが LinkedIn サイトを操作しない限り、「サーバー側で認証」する方法はありません。

于 2012-03-15T18:53:17.403 に答える