Nếu tôi đang sử dụng luồng phía máy chủ để xác thực người dùng và nhận mã thông báo truy cập, tôi có thể đặt mã thông báo truy cập đó trong SDK JavaScript như thế nào và sử dụng nó để thực hiện cuộc gọi từ phía khách hàng?Cách đặt Quyền truy cập Facebook (từ máy chủ) trong JavasScript SDK
Trả lời
Khi người dùng đã kết thúc chảy máy chủ xác thực phía người sử dụng đã được ủy quyền cho ứng dụng của bạn, tất cả các bạn cần làm là sử dụng FB.getLoginStatus phương pháp:
FB.getLoginStatus(function(response) {
if (response.status === "connected") {
console.log("authResponse: ", response.authResponse);
FB.api("me", function(response2) {
console.log("Hey there " + response2.name);
});
}
else if (response.status === "not_authorized") {
// user is logged in to facebook but hasn't authorized your app, should not happen if he went through the server side authentication
}
else {
// user is logged out of facebook, also should not happen
}
}
Như bạn có thể nhìn thấy bạn chỉ có thể sử dụng sDK js để truy vấn đồ thị, không có nhu cầu để có được những dấu hiệu bằng tay, nhưng trong trường hợp bạn vẫn cần nó, authResponse
nên có định dạng sau:
authResponse: {
accessToken: "aaaaaaa",
expiresIn: "bbbbbb",
signedRequest: "cccccc",
userID: "dddddd"
}
Chỉnh sửa
Nếu người dùng đăng nhập vào facebook và đã cho phép và tương tác với ứng dụng của bạn thì có getLoginStatus
phải trả lại mã thông báo truy cập hợp lệ.
Có một vài trường hợp trong đó không phải như vậy, một trong số đó là mã thông báo đã hết hạn.
Vì nó nói trong Handling Invalid and Expired Access Tokens:
Desktop Web và Mobile ứng dụng Web mà thực hiện xác thực với Javascript SDK
Calling FB.getLoginStatus() hoặc tình trạng đảm bảo: đúng được thiết lập khi bạn gọi gọi FB.init() có nghĩa là lần sau khi người dùng truy cập vào ứng dụng của bạn và được đăng nhập vào Facebook, đối tượng authResponse bạn được chuyển thành kết quả của các cuộc gọi đó sẽ chứa thông tin mới, mã thông báo truy cập hợp lệ .
Trong trường hợp này, nó chỉ đơn giản là hành động của người dùng sử dụng ứng dụng của bạn mà ngầm tạo ra một mã thông báo truy cập mới.
- 1. SDK API Facebook thu hồi quyền truy cập
- 2. Đặt quyền truy cập API JavascriptToken
- 3. SDK Facebook + Google SDK: Khung được truy cập đặt 'document.domain' thành 'facebook.com'
- 4. Facebook C# SDK - Xác thực luồng máy chủ
- 5. Làm cách nào để đặt quyền truy cập cho phép kiểm soát quyền truy cập trong webrick dưới đường ray?
- 6. Truy cập máy chủ MBean từ xa
- 7. Truy cập CouchDB Futon trên máy chủ từ xa
- 8. iOS Facebook SDK - Kiểm tra quyền
- 9. cách truy cập máy chủ phát triển django trên máy ảo từ máy tính thực tế
- 10. Truy cập máy chủ apache cục bộ từ hộp ảo
- 11. Truy cập TEAMCITY từ máy từ xa
- 12. truy cập người dùng ủy quyền ID của Facebook?
- 13. ASP.NET + Quyền truy cập vào đường dẫn bị từ chối
- 14. Chỉ định lại quyền truy cập máy chủ cho người dùng MySQL
- 15. Facebook SDK 3.0 - Nhận Mã số Đăng nhập Facebook và Mã số Truy cập
- 16. Cách đăng nhập vào facebook trong WebView nếu đã có mã thông báo truy cập từ FB SDK trong Android
- 17. NodeJS máy chủ không thể truy cập từ bên ngoài
- 18. Ứng dụng Cài đặt quyền truy cập trong iOS
- 19. Bị cấm Bạn không có quyền truy cập /wp-login.php trên máy chủ này
- 20. Tại sao tôi không có quyền truy cập trên máy chủ?
- 21. Mã truy cập mở rộng từ Facebook không hoạt động đúng cách
- 22. Truy cập HDFS từ máy chủ từ xa thông qua API Java, xác thực người dùng
- 23. Laravel - Forbidden Bạn không có quyền truy cập/trên máy chủ này
- 24. Máy chủ SQL: bạn có thể giới hạn quyền truy cập vào chỉ một bảng
- 25. Bạn không có quyền truy cập/nagios/trên máy chủ này
- 26. Làm cách nào để nhận ID người dùng Facebook từ đối tượng Facebook trong SDK iOS?
- 27. quyền truy cập trang cài đặt trong drupal
- 28. Hạn chế quyền truy cập vào máy chủ HTTP dựa trên Node.js theo địa chỉ IP
- 29. Cập nhật quyền cho ứng dụng Facebook
- 30. Cách xác nhận đăng nhập ứng dụng Facebook phía máy khách từ phía máy chủ
Cảm ơn đây là điều tôi chưa hề rõ ràng. Chỉ để đảm bảo tôi hiểu. Khi người dùng đã ủy quyền ứng dụng của tôi (cho dù điều này được thực hiện trên máy chủ hoặc máy khách) thì getLoginStatus sẽ luôn trả về một authToken hợp lệ và một tầng "được kết nối" và tôi sẽ không cần phải thẩm định lại chúng không? –
Đã chỉnh sửa câu trả lời của tôi –
Giải pháp này hoạt động tốt, cảm ơn. Tôi chỉ có một vấn đề, response.status đã trả về null khi tôi mở trang của tôi chưa được yêu cầu và trước khi làm mới nó, hãy đăng nhập vào một tab khác. Để giải quyết nó, tôi phải chuyển một tham số thứ hai tới FB.getLoginStatus: "true", để buộc SDK thực hiện một yêu cầu mới đối với Facebook và cập nhật chính xác trạng thái đăng nhập. Theo bài viết sau, Facebook lưu trữ phản hồi FB.getLoginStatus. https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/ –