2012-11-07 32 views
5

tôi có một vấn đề nhỏ với Meteor và Twitter. Tất cả những gì tôi muốn làm là đăng một tweet thông qua một lần nhấp vào một nút. Đối với điều này tôi phải xác thực bản thân mình trên Oauth cho Twitterservice.Cách đăng một tweet bằng Meteor.js, Twitter và Oauth

Hiện tại tôi đang thực hiện xác thực theo cách thực sự phức tạp từ máy khách đến máy chủ và ngược lại. Nhưng bây giờ tôi đã tìm thấy hàm Meteor.loginWithTwitter. Ban đầu tôi nghĩ chức năng này chỉ dành cho việc đăng nhập bạn vào ứng dụng của riêng bạn với Twitterkeys, giờ tôi không còn chắc chắn nữa. Có lẽ tôi cũng có thể sử dụng nó cho vấn đề của tôi. Bởi vì dường như quá trình Oauth hoàn toàn (và theo một cách đơn giản) được thực hiện trong Meteor.

Đáng buồn là tôi không thể tìm thấy bất kỳ tài liệu hoặc ví dụ nào để chỉ đăng nhập và nhận được oauth_token cuối cùng. Và vì vậy tất cả tôi nhận được từ Meteor trở lại sau đó tôi cố gắng đoạn mã sau, là errormessage này:

Erromessage: Accounts.ConfigError {thông điệp: "Dịch vụ không được cấu hình"}

Meteor.loginWithTwitter(function(err){ 
    if (err){ 
    console.log(err) 
    }else{ 
    console.log("yeah"); 
} 
}); 

Tôi biết tôi phải nhập một nơi nào đó Thông tin ứng dụng của tôi giống như khóa Người tiêu dùng, nhưng tôi không biết ở đâu. Ai đó có thể giúp tôi và biết một số ví dụ cho tôi không? Hoặc biết nếu tôi thậm chí đi đúng hướng?

Cảm ơn và lời chào Philipp

Trả lời

6

Cách đơn giản nhất để làm điều này: Thêm gói tài khoản-ui:

meteor add accounts-ui accounts-twitter 

và trong mẫu của bạn làm

{{loginButtons}} 

Trên trận đầu tiên của ứng dụng, một lần nhấp vào nút đăng nhập sẽ hướng dẫn bạn qua quá trình thiết lập. Bạn sẽ tạo một ứng dụng Twitter và sao chép khóa người tiêu dùng và bí mật của người tiêu dùng vào một biểu mẫu, sao băng đó trình bày cho bạn. Sau đó, bạn có thể đăng nhập bằng Twitter.

Hãy chắc chắn để sử dụng phiên bản mới nhất Meteor (0.5.2 tại thời điểm này)

+1

câu trả lời này là lỗi thời bây giờ nó nên được '{{> loginButtons}}' – pahan

1

Bạn cũng có thể cấu hình chính tiêu dùng của bạn và bí mật với mã, đây là một ví dụ với weibo nhưng công việc của mình cho twitter, google vv ... (server side):

// first, remove configuration entry in case service is already configured 
Accounts.loginServiceConfiguration.remove({ 
    service: "weibo" 
}); 
Accounts.loginServiceConfiguration.insert({ 
    service: "weibo", 
    clientId: "1292962797", 
    secret: "75a730b58f5691de5522789070c319bc" 
}); 
1

bạn cần phải thêm những gì @ Tom31 gợi ý ở phía máy chủ của bạn, ví dụ, tôi có một/máy chủ/máy chủ.js

Accounts.loginServiceConfiguration.remove({"service": "twitter"}); 
Accounts.loginServiceConfiguration.insert({ 
"service": "twitter", 
"consumerKey" : "<yours>", 
"secret" : "<yours>" 
}); 

Cuối cùng, thẻ truy cập của bạn được lưu trữ trong sử dụng tại cơ sở dữ liệu nhưng thông tin này nó không phải là tuyên truyền cho khách hàng, và nếu bạn muốn có quyền truy cập vào nó, bạn mới để tạo ra một phương pháp phía máy chủ và truy cập nó thông qua Meteor.call hoặc Meteor.apply

Cập nhật: Ví dụ về phương pháp phía máy chủ của tôi

tôi đã tạo ra phương pháp phía máy chủ của tôi như thế này:

Meteor.methods({ 
... 
    userGet: function(id) { 
    return removeSensibleFields(Meteor.users.findOne({ _id: id })); 
    } 
... 
}); 

nơi removeSensibleFields là một phương pháp để loại bỏ tất cả các thông tin không cần thiết/tin mà có thể không được gửi trả lại cho khách hàng

+0

bạn có thể cung cấp một ví dụ về phương thức phía máy chủ sẽ trông như thế nào? – Rico

+0

Đã cập nhật bài đăng của tôi – bitIO

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