2014-09-24 13 views
5

chúng tôi đang phát triển một ứng dụng Facebook với PHP SDK 3.2.3 và Javascript SDK. Tôi cần yêu cầu lại quyền người dùng xuất bản trên tường của họ nếu họ từ chối quyền truy cập để xuất bản trên Facebook khi đăng nhập.Yêu cầu lại đối với Quyền Facebook bị Từ chối (auth_type = rerequest) không hoạt động

Như documentation nói:

[...] ứng dụng của bạn phải tái yêu cầu quyền đã từ chối với xử lý đặc biệt. [...]

[...] Ứng dụng web phải chuyển một tùy chọn mới cho Hộp thoại đăng nhập một cách rõ ràng: auth_type: rerequest. Chi tiết về cách tùy chọn mới hoạt động trên web được đề cập trong tài liệu của chúng tôi về cách sử dụng JavaScript SDK trên Web.

nhưng chúng tôi cố gắng với yêu cầu này:

https://www.facebook.com/dialog/oauth?auth_type=rerequest&client_id=1...7&redirect_uri=MY_PAGE&state=a1f4412db0617ef1a620ac1d1ebc2af8&sdk=php-sdk-3.2.3&campaign_page_with_active_panel=MY_PAGE

nhưng người dùng được chuyển hướng trực tiếp trên url MY_PAGE và cho phép không tái yêu cầu.

Hành vi này (sai) có thể là do ứng dụng là một ứng dụng thử nghiệm?

+0

gì là tại liên kết facebook? Hoặc URL có bao gồm mã thực tế không? – Coffee

+2

Đây là url chúng tôi sử dụng cho người dùng chuyển hướng. Chúng tôi hy vọng rằng với auth_type = rerequest, facebook yêu cầu lại quyền, nhưng không có gì xảy ra. – sensorario

+0

Trong tài liệu nào bạn tìm thấy rằng bạn nên thêm 'auth_type = rereqeust' vào url? – WizKid

Trả lời

3

Trên js SDK tôi trực tiếp gọi phương thức đăng nhập như thế này:

FB.login(function(response) { 
     if (response.status == 'connected') { 

     } 
},{ 
     scope: 'email,public_profile', 
     return_scopes: true, 
     auth_type: 'rerequest' 
}); 

Về phía server tôi sử dụng accesstoken yêu cầu để biết chi tiết người dùng trên Facebook. Nếu email không được cung cấp, tôi trả lại lỗi cho người dùng biết rằng anh ấy cần phải đăng nhập lại và cung cấp email. Khi họ nhấp lại vào nút đăng nhập vì auth_type: 'rerequest' một phần, họ sẽ được yêu cầu lại cho các quyền.

-1

Trong php SDK (3.x) auth_type rerequest có thể được gửi lên Facebook thông qua tham số getLoginUrl:

$loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'public_profile, user_friends, email', 
    'redirect_url' => 'http://www.yourul.com/example.php', 
    'auth_type' => 'rerequest', 
)); 
0

Giả sử người dùng đã từ chối cho phép email, với FacebookSDK và laravel nơi $ fb là thể hiện của FacebookSDK, bạn có thể:

return redirect()->to($fb->getReRequestUrl(['email'])); 

mà không FacebookSDK:

return redirect('https://www.facebook.com/v2.10/dialog/oauth?' . build_query([ 
        'client_id'  => config('services.facebook.client_id'), 
        'redirect_uri' => 'http://localhost:8000/social_auth/facebook/callback', 
        'state'   => $state, 
        'auth_type'  => 'rerequest', 
        'scope'   => 'email' 
       ])); 
Các vấn đề liên quan