2012-03-15 92 views
5

我已經被客戶請求將他們的LinkedIn羣組的最新帖子提交到我們的某個網站頁面。正在檢索LinkedIn使用ColdFusion的小組討論帖子

我正在開發使用ColdFusion 9,並且已經研究了很多天,現在決定在這裏發佈我的查詢,希望有人能夠幫助我。

我可以達到我有requestToken的地步。我的理解是,我現在需要簽署請求令牌以獲取accessToken。我的問題是我需要在幕後做這件事。但是,我可以找到的所有示例都將前端用戶重定向到授權url以允許用戶進行身份驗證,但我不希望用戶進行身份驗證,而是想要驗證服務器端。

我正在嘗試使用Scribe Java包裝庫。下面是我到目前爲止獲得requestToken(以及授權url)的代碼。我需要有人點我在正確的方向上簽字的服務器端代碼的標記,這樣我可以進行必要的調用消耗組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

回想起來,我應該可以標題爲這個線程_如何手動創建LinkedIn accessToken服務器端_ – andrewjackson123 2012-03-15 16:03:55

回答

3

Kirsten在技術上是正確的 - 鏈接在Api的要求用戶身份驗證。這很煩人,因爲你需要進行身份驗證甚至檢索組帖子。

但是有辦法繞過它。

使用抄寫員,您可以手動創建訪問令牌。因此,我會做的是在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 &℃。

+0

謝謝@Bigfellahull。我最終做到了這一點,並且完美運作。我不需要創建一個虛擬帳戶。我只是使用與創建LinkedIn應用程序以獲取API密鑰的帳戶相同的帳戶。 – andrewjackson123 2012-03-23 09:02:41

2

OAuth認證是專爲用戶通過網站上的登錄(在這裏是LinkedIn)嚮應用程序提供他們的許可。它不是爲您自動讓用戶授予您應用程序的權限而設計的。

爲了獲得使用LinkedIn API的訪問令牌,您必須包含身份驗證流程的一部分,該流程將用戶發送至LinkedIn,以使您的應用程序可以代表他們進行操作,在此時您可以檢索通過PIN(用戶輸入)或通過回調到您的應用程序的驗證標記。

總之,沒有用戶與LinkedIn站點交互的情況下,就無法「驗證服務器端」。