2012-03-15 15 views
5

Tôi đã được khách hàng yêu cầu kéo các bài đăng mới nhất từ ​​nhóm LinkedIn của họ lên một trong các trang của chúng tôi.Truy xuất các bài thảo luận của Linkedin Group bằng ColdFusion

Tôi đang phát triển sử dụng ColdFusion 9 và đã nghiên cứu điều này trong vài ngày và quyết định đăng truy vấn của tôi ở đây với hy vọng rằng ai đó có thể giúp tôi.

Tôi có thể đến điểm tôi có requestToken. Sự hiểu biết của tôi là bây giờ tôi cần phải ký mã thông báo yêu cầu để có được accessToken. Vấn đề của tôi là tôi cần phải làm điều này đằng sau hậu trường. Tuy nhiên, tất cả các ví dụ mà tôi có thể tìm thấy là chuyển hướng người dùng đầu cuối đến url ủy quyền để cho phép người dùng xác thực, nhưng tôi không muốn người dùng xác thực, thay vào đó, tôi muốn xác thực phía máy chủ.

Tôi đang cố gắng sử dụng thư viện trình bao bọc Scribe Java. Dưới đây là mã mà tôi có cho đến nay được requestToken (cũng như url ủy quyền). Tôi cần một ai đó để chỉ cho tôi đi đúng hướng để ký mã thông báo mã server-side vì vậy mà tôi có thể làm cho các cuộc gọi cần thiết để tiêu thụ API Groups (ví dụ 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

Nhìn lại, tôi có lẽ nên có tiêu đề chủ đề này _Làm thế nào để tự tạo một LinkedIn accessToken server-side_ – andrewjackson123

Trả lời

3

Kirsten về mặt kỹ thuật là chính xác - Được liên kết Trong yêu cầu xác thực người dùng của Api. Thật khó chịu vì bạn cần phải xác thực để thậm chí truy xuất các bài đăng nhóm.

Tuy nhiên, có nhiều cách làm tròn nó.

Với người ghi chép, bạn có thể tạo mã thông báo truy cập theo cách thủ công. Vì vậy, những gì tôi sẽ làm là tạo ra một tài khoản người dùng giả trên Linked In, xác thực người dùng như bình thường và lưu các chứng chỉ ký trở trên cơ sở dữ liệu của bạn, sau đó bạn có thể sử dụng để tạo ra các mã thông báo:

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" 
      ); 

Bạn có thể sau đó bỏ qua phần xác thực và gọi api cho phép bạn hiển thị các bài viết mà không cần nhóm người dùng hiện có để đăng nhập:

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); 

tôi không có ý tưởng nếu điều này sẽ vi phạm liên kết trong của T & C mặc dù.

+0

Cảm ơn @Bigfellahull. Tôi đã làm điều này và nó hoạt động hoàn hảo. Tôi không cần phải tạo một tài khoản giả. Tôi vừa sử dụng cùng một tài khoản như tài khoản tôi đã sử dụng để tạo ứng dụng LinkedIn để nhận các khóa API. – andrewjackson123

2

xác thực OAuth được thiết kế cho người dùng cấp quyền cho ứng dụng thông qua đăng nhập trên trang web (trong trường hợp này là LinkedIn). Nó không được thiết kế để bạn có thể tự động cho phép người dùng cấp phép cho ứng dụng của bạn.

Để nhận mã thông báo truy cập để sử dụng API LinkedIn, bạn phải bao gồm một phần luồng xác thực gửi người dùng đến LinkedIn để cho phép ứng dụng của bạn hành động thay mặt họ, tại thời điểm này bạn có thể truy xuất mã thông báo xác minh qua PIN (mà người dùng nhập) hoặc qua gọi lại đến ứng dụng của bạn.

Tóm lại, không có cách nào để "xác thực phía máy chủ" mà không cần người dùng tương tác với trang LinkedIn.

Các vấn đề liên quan