5

一位客户要求我将他们 LinkedIn 群组中的最新帖子拉到我们的一个网站页面。

我正在使用 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 回答