2012-01-28 42 views
6

Tôi đang phát triển một ứng dụng Facebook. Tôi có luồng OAuth phía máy chủ cho phép tôi xác thực người dùng mà không yêu cầu anh ta nhấp vào nút bất kỳ. Do đó, tôi truy xuất accessToken của anh ta miễn là các thông tin khác và sử dụng các thông tin đó trên phía máy chủ trước đây để tạo trang.Đặt quyền truy cập API JavascriptToken

Trong ứng dụng của tôi, bây giờ tôi cần phải sử dụng API Javascript có thể chia sẻ về mặt kỹ thuật cùng một mã thông báo Oauth.

Có thể khởi tạo đối tượng javascript của FB bằng mã thông báo Oauth đã cho không?

Tôi biết có thể làm điều ngược lại khi thực hiện quy trình Oauth ở phía máy khách và chia sẻ khóa Oauth với phía máy chủ thông qua cookie nhưng điều này có hai nhược điểm trong quan điểm của tôi: _ Đầu tiên, nó ngụ ý để có nút "đăng nhập" này đối với tôi không phải là trải nghiệm người dùng tốt cho ứng dụng facebook. _ Ngoài ra, tôi không hiểu quy trình Oauth này được xử lý như thế nào nếu ứng dụng của tôi bao gồm hai trang khác nhau. Đi từ trang này sang trang khác tải lại hoàn toàn javascript. Quá trình Oauth này (với cửa sổ bật lên và vv) có được thực hiện trên mỗi lần tải lại trang không?

Cảm ơn sự giúp đỡ của bạn!

Trả lời

9

Tôi đã có một vấn đề tương tự một lần, Facebook có một phương pháp cũ gọi FB.getLoginStatus mà bạn có thể sử dụng để kiểm tra xem người dùng đã cho phép mà không cần một popup -

FB.init({appId: 'XXXXXXXXXXXXXX', xfbml: true, cookie: true, oauth: true}); 
FB.getLoginStatus(function(response) { 

    if (response.authResponse) { 
    token = response.authResponse.accessToken; 
    FB.api('/me', function(response) { 
     console.log(response); 
     // do something here they are logged in and have given you perms 
    }); 
    } else { 
    // no user session available, someone you dont know 
    } 
}); 

hy vọng rằng sẽ giúp!

+0

Nó hoạt động rất tốt! FYI, Có vẻ như chúng tôi không cần đặt mã thông báo làm biến toàn cầu. Thks rất nhiều cho sự giúp đỡ của bạn! –

+0

tuyệt vời! vui vì tôi có thể chỉ cho bạn đi đúng hướng. :) –

+0

Cảm ơn một tấn! Đã có cùng một vấn đề và điều này giải quyết nó trong một vài giây! Bạn đã lưu tôi GIỜ LÀM VIỆC. –

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