Tôi đang chơi xung quanh với ủy quyền Oauth 2.0 trong Facebook và tự hỏi liệu mã thông báo truy cập mà Facebook có bị hết hạn không. Nếu vậy, có cách nào để yêu cầu mã thông báo truy cập lâu dài không?
Tôi đang chơi xung quanh với ủy quyền Oauth 2.0 trong Facebook và tự hỏi liệu mã thông báo truy cập mà Facebook có bị hết hạn không. Nếu vậy, có cách nào để yêu cầu mã thông báo truy cập lâu dài không?
Câu trả lời:
Sau khi đào xung quanh một chút, tôi tìm thấy điều này. Nó dường như là câu trả lời:
Cập nhật (ngày 11 tháng 4 năm 2018)
Thông báo thay đổi Facebook (10/04/2018)
Trang hết hạn mã thông báo cập nhật Facebook (10/04/2018)
offline_access: Cho phép ứng dụng của bạn thực hiện các yêu cầu được ủy quyền thay mặt cho người dùng bất cứ lúc nào. Theo mặc định, hầu hết các mã thông báo truy cập hết hạn sau một khoảng thời gian ngắn để đảm bảo các ứng dụng chỉ thực hiện các yêu cầu thay mặt cho người dùng khi họ đang tích cực sử dụng ứng dụng. Quyền này làm cho mã thông báo truy cập được trả về bởi điểm cuối OAuth của chúng tôi tồn tại lâu.
Đó là một giá trị cho phép được yêu cầu.
http://developers.facebook.com/docs/authentication/permissions
CẬP NHẬT
quyền offline_access đã bị xóa cách đây một thời gian.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
Hãy thử điều này có thể nó sẽ giúp đầy đủ cho bạn
https://graph.facebook.com/oauth/authorize?
client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
redirect_uri=http://www.example.com/
Để nhận được Mã thông báo truy cập trọn đời, bạn phải sử dụng scope=offline_access
Ý nghĩa của scope=offline_access
nó là: -
Cho phép ứng dụng của bạn thực hiện các yêu cầu được ủy quyền thay mặt cho người dùng bất cứ lúc nào. Theo mặc định, hầu hết các mã thông báo truy cập hết hạn sau một khoảng thời gian ngắn để đảm bảo các ứng dụng chỉ thực hiện các yêu cầu thay mặt cho người dùng khi họ đang tích cực sử dụng ứng dụng. Quyền này làm cho mã thông báo truy cập được trả về bởi điểm cuối OAuth của chúng tôi tồn tại lâu.
Nhưng theo nâng cấp trong tương lai của facebook, chức năng offline_acees sẽ không còn tồn tại mãi mãi từ ngày 3 tháng 10 năm 2012. và người dùng sẽ được cấp mã thông báo truy cập trong 60 ngày và trước khi hết hạn mã thông báo truy cập Facebook sẽ thông báo hoặc bạn có thể nhận được tùy chỉnh của mình chức năng thông báo tìm nạp giá trị hết hạn từ Api Facebook ..
Lưu ý rằng Facebook hiện không chấp nhận quyền offline_access có lợi cho các mã thông báo mà bạn có thể yêu cầu "nâng cấp" khi hết hạn. Bây giờ tôi chỉ tự mình giải quyết vấn đề này, vì vậy tôi không có nhiều điều để nói, nhưng tài liệu này có thể giúp:
https://developers.facebook.com/docs/offline-access-deprecation/
Tôi đến đây với cùng một câu hỏi như OP, nhưng các câu trả lời cho thấy việc sử dụng offline_access đang giương cờ đỏ cho tôi.
Bảo mật, việc truy cập ngoại tuyến vào tài khoản Facebook của người dùng khác biệt về mặt chất lượng và mạnh mẽ hơn nhiều so với việc chỉ sử dụng Facebook để đăng nhập một lần và không nên sử dụng một cách nhẹ nhàng (trừ khi bạn thực sự cần nó). Khi người dùng cấp quyền này, "ứng dụng" có thể kiểm tra tài khoản của người dùng từ bất cứ đâu vào bất cứ lúc nào. Tôi đặt "ứng dụng" trong ngoặc kép vì thực ra đó là bất kỳ công cụ nào có thông tin đăng nhập - bạn có thể tạo ra một bộ công cụ không liên quan gì đến máy chủ web có thể truy cập bất kỳ thông tin nào mà người dùng đã đồng ý chia sẻ với những người đó thông tin đăng nhập.
Tôi sẽ không sử dụng tính năng này để làm việc trong suốt vòng đời mã thông báo ngắn; đó không phải là mục đích của nó Thật vậy, bản thân mã thông báo trọn đời là một tính năng bảo mật. Tôi vẫn đang tìm kiếm thông tin chi tiết về cách sử dụng đúng các mã thông báo này (Tôi có thể duy trì chúng không? Tôi có nên / bảo mật chúng như thế nào không? / hoặc làm cách nào để tôi làm mới?), nhưng tôi khá chắc chắn offline_access không đúng cách.
Vâng, họ hết hạn. Có một giá trị 'hết hạn' được truyền cùng với 'access_token' và từ những gì tôi có thể nói là khoảng 2 giờ. Tôi đã tìm kiếm, nhưng tôi không thấy cách nào để yêu cầu thời gian hết hạn lâu hơn.
vì tôi có cùng một vấn đề - hãy xem bài đăng xuất sắc về chủ đề này từ ben Đấu thầu, người đã làm rõ tất cả các vấn đề này với mã thông báo sai và đúng loại để gửi cho các yêu cầu.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Bạn luôn có thể làm mới mã thông báo truy cập của người dùng mỗi khi người dùng đăng nhập vào trang web của bạn thông qua facebook. Quyền truy cập ngoại tuyến không thể đảm bảo bạn nhận được mã thông báo truy cập trọn đời, mã thông báo truy cập thay đổi bất cứ khi nào người dùng thu hồi quyền truy cập ứng dụng của bạn hoặc người dùng thay đổi mật khẩu của họ.
Trích dẫn từ facebook http://developers.facebook.com/docs/authentication/
Lưu ý: Nếu ứng dụng chưa yêu cầu quyền offline_access, mã thông báo truy cập bị giới hạn thời gian. Mã thông báo truy cập giới hạn thời gian cũng bị vô hiệu khi người dùng đăng xuất khỏi Facebook. Nếu ứng dụng đã nhận được sự cho phép offline_access từ người dùng, mã thông báo truy cập sẽ không hết hạn. Tuy nhiên, nó bị vô hiệu hóa bất cứ khi nào người dùng thay đổi mật khẩu của mình.
Giả sử bạn lưu trữ uid facebook của người dùng và mã thông báo truy cập trong bảng người dùng trong cơ sở dữ liệu của bạn, mỗi khi người dùng nhấp vào nút "Đăng nhập bằng facebook", bạn kiểm tra trạng thái đăng nhập bằng API Javascript, sau đó kiểm tra trạng thái kết nối từ phản hồi , nếu người dùng đã kết nối với trang web của bạn, thì bạn có thể cập nhật mã thông báo truy cập trong bảng.
đăng nhập vào tài khoản facebook và chỉnh sửa cài đặt ứng dụng của bạn (tài khoản -> cài đặt ứng dụng -> quyền bổ sung của ứng dụng sử dụng tài khoản của bạn). bỏ chọn quyền (Truy cập dữ liệu của tôi khi tôi không sử dụng ứng dụng (offline_access)). Sau đó, khuôn mặt sẽ phát hành một mã thông báo mới khi bạn đăng nhập vào ứng dụng.
Cơ bản mã thông báo facebook hết hạn trong một giờ. Nhưng bạn có thể sử dụng mã thông báo 'trao đổi' để nhận mã thông báo tồn tại lâu https://developers.facebook.com/docs/facebook-login/access-tokens
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
kiểm tra những điều sau đây khi bạn tương tác với api biểu đồ facebook.
1) URL kết nối ứng dụng phải là cơ sở của URL kết nối "redirect_uri" của bạn: - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) "redirect_uri" của bạn "phải giống nhau trong cả hai trường hợp (khi bạn yêu cầu mã xác minh và yêu cầu access_token) redirect_uri - www.x-minds.org/fb/connect/redirect 3), bạn nên mã hóa đối số khi bạn yêu cầu access_token 4) không nên vượt qua đối số (type = client_cred) khi bạn yêu cầu access_token. máy chủ ủy quyền sẽ phát hành mã thông báo mà không có phần phiên. chúng ta không thể sử dụng mã thông báo này với bí danh "tôi" trong biểu đồ api. Mã thông báo này sẽ có độ dài (40) nhưng mã thông báo có phần phiên sẽ có độ dài (81). Mã thông báo truy cập không có phần phiên sẽ hoạt động với một số trường hợp
ví dụ: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Nhưng API đồ thị với bí danh "tôi" sẽ chỉ hoạt động với mã thông báo với phần phiên.
Tôi không biết chính xác khi nào mã thông báo hết hạn, nhưng họ sẽ làm, nếu không sẽ không có tùy chọn để cấp quyền ngoại tuyến.
Dù sao, đôi khi yêu cầu người dùng cấp quyền ngoại tuyến là một việc quá mức cần thiết. Tùy thuộc vào nhu cầu của bạn, có thể đủ để mã thông báo vẫn còn hiệu lực miễn là trang web được mở trong trình duyệt của người dùng. Đối với điều này, có thể có một giải pháp đơn giản hơn - đăng nhập lại người dùng theo định kỳ bằng cách sử dụng iframe: facebook tự động đăng nhập lại từ cookie php
Đã làm cho tôi...