客户已要求我将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>
答案 0 :(得分:3)
Kirsten在技术上是正确的 - 在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&amp; C。
答案 1 :(得分:2)
OAuth身份验证旨在让用户通过网站登录(在本例中为LinkedIn)向应用程序授予权限。它不是为您自动获得应用程序的用户授予权限而设计的。
为了获取访问令牌以使用LinkedIn API,您必须包含将用户发送到LinkedIn的身份验证流程的一部分,以授予您的应用程序代表他们执行操作的权限,此时您可以检索验证者令牌可以通过PIN(用户输入)或通过回调到您的应用程序。
简而言之,如果没有用户与LinkedIn网站进行交互,就无法“验证服务器端”。