Đăng nhập

Đăng Nhập Bằng Facebook (Java), Facebook Login

Tôi đã tìm kiếm rất nhiều, đọc nhiều blog, bài viết, hướng dẫn, nhưng cho đến bây giờ không có một ví dụ hoạt động nào mà tôi có thể sử dụng tài khoản face book để đăng nhập vào ứng dụng của mình.

Đang xem: đăng nhập bằng facebook (java)

Tôi biết rằng tôi phải sử dụng OAuth, nhận mã thông báo, tự động hóa, v.v …

Bất cứ ai cũng có thể chia sẻ một ví dụ? (trên GAE/Java)

Đây là cách tôi làm trên App Engine:

Bước 1) Đăng ký “ứng dụng” trên Facebook (xem https://developers.facebook.com/ ). Bạn đặt tên cho Facebook cho ứng dụng và url. Url bạn đăng ký là url đến trang (jsp hoặc servlet) mà bạn muốn xử lý đăng nhập. Từ đăng ký, bạn nhận được hai chuỗi, “ID ứng dụng” và “bí mật ứng dụng” (sau này là mật khẩu của bạn, không đưa ra hoặc viết bằng html).

Trong ví dụ này, giả sử url tôi đăng ký là ” http: // myappenginzonid.appspot.com/signin_fb.do “.

2) Từ một trang web, nói bằng một nút, bạn chuyển hướng người dùng đến url sau trên Facebook, thay thế id ứng dụng của bạn cho “myfacebookappid” trong ví dụ dưới đây. Bạn cũng phải chọn những quyền (hoặc “phạm vi”) mà bạn muốn hỏi người dùng (xem https://developers.facebook.com/docs/reference/api/permissions/ ). Trong ví dụ tôi chỉ yêu cầu quyền truy cập vào email của người dùng.

(Một điều hữu ích cần biết là bạn cũng có thể chuyển một chuỗi tùy chọn sẽ được trả về không thay đổi trong tham số “trạng thái”. Ví dụ: tôi chuyển khóa kho dữ liệu của người dùng, vì vậy tôi có thể truy xuất người dùng khi Facebook trả lại khóa với tôi. Tôi không làm điều này trong ví dụ.)

Đây là một đoạn trích jsp:

“>

*

3) Người dùng của bạn sẽ được chuyển tiếp đến Facebook và được yêu cầu phê duyệt các quyền bạn yêu cầu. Sau đó, người dùng sẽ được chuyển hướng trở lại url bạn đã đăng ký. Trong ví dụ này, đây là ” http: // myappenginimid.appspot.com/signin_fb.do ” mà trong tệp web.xml của tôi ánh xạ tới servlet sau:

import org.json.JSONObject;import org.json.JSONException;import Java.io.BufferedReader;import Java.io.InputStreamReader;import Java.io.IOException;import Java.net.URL;import Java.net.URLConnection;import Java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class SignInFB extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String code = req.getParameter(“code”); if (code == null || code.equals(“”)) { // an error occurred, handle this } String token = null; try { String g = “https://graph.facebook.com/oauth/access_token?client_id=myfacebookappid&redirect_uri=” + URLEncoder.encode(“http://myappengineappid.appspot.com/signin_fb.do”, “UTF-8”) + “&client_secret=myfacebookappsecret&code=” + code; URL u = new URL(g); URLConnection c = u.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream())); String inputLine; StringBuffer b = new StringBuffer(); while ((inputLine = in.readLine()) != null) b.append(inputLine + ”
“); in.close(); token = b.toString(); if (token.startsWith(“{“)) throw new Exception(“error on requesting token: ” + token + ” with code: ” + code); } catch (Exception e) { // an error occurred, handle this } String graph = null; try { String g = “https://graph.facebook.com/me?” + token; URL u = new URL(g); URLConnection c = u.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream())); String inputLine; StringBuffer b = new StringBuffer(); while ((inputLine = in.readLine()) != null) b.append(inputLine + ”
“); in.close(); graph = b.toString(); } catch (Exception e) { // an error occurred, handle this } String facebookId; String firstName; String middleNames; String lastName; String email; Gender gender; try { JSONObject json = new JSONObject(graph); facebookId = json.getString(“id”); firstName = json.getString(“first_name”); if (json.has(“middle_name”)) middleNames = json.getString(“middle_name”); else middleNames = null; if (middleNames != null && middleNames.equals(“”)) middleNames = null; lastName = json.getString(“last_name”); email = json.getString(“email”); if (json.has(“gender”)) { String g = json.getString(“gender”); if (g.equalsIgnoreCase(“female”)) gender = Gender.FEMALE; else if (g.equalsIgnoreCase(“male”)) gender = Gender.MALE; else gender = Gender.UNKNOWN; } else { gender = Gender.UNKNOWN; } } catch (JSONException e) { // an error occurred, handle this } …Tôi đã xóa mã xử lý lỗi, vì bạn có thể muốn xử lý nó khác với tôi. (Ngoài ra, “Giới tính” tất nhiên là một lớp mà tôi đã xác định.) Tại thời điểm này, bạn có thể sử dụng dữ liệu cho bất cứ điều gì bạn muốn, như đăng ký người dùng mới hoặc tìm kiếm người dùng hiện tại để đăng nhập. Lưu ý rằng ” chuỗi myfacebookappsecret “tất nhiên phải là bí mật ứng dụng của bạn từ Facebook.

Bạn sẽ cần gói “org.json” để sử dụng mã này, bạn có thể tìm thấy tại: http://json.org/Java/ (chỉ cần lấy các tệp .Java và thêm chúng vào mã của bạn trong một cấu trúc thư mục org/json).

Xem thêm: Top 15 Phần Mềm Ghép Video Miễn Phí Trên Máy Tính (Đơn Giản Dễ Dùng)

Tôi hi vọng cái này giúp được. Nếu bất cứ điều gì không rõ ràng, xin vui lòng bình luận, và tôi sẽ cập nhật câu trả lời.

Ex hoạt hình, – Alexander.

**** CẬP NHẬT ****

Tôi muốn thêm một vài thông tin, lời xin lỗi của tôi nếu một số điều này có vẻ hơi quá.

Để có thể đăng nhập người dùng bằng tài khoản Facebook của anh ấy/cô ấy, bạn cần biết người dùng nào trong kho dữ liệu mà chúng ta đang nói đến. Nếu đó là một người dùng mới, dễ dàng, hãy tạo một đối tượng người dùng mới (với một trường có tên là “facebookId” hoặc bất cứ điều gì bạn muốn gọi nó, có giá trị bạn nhận được từ Facebook), hãy duy trì nó trong kho dữ liệu và đăng nhập người dùng.

Nếu người dùng tồn tại, bạn cần phải có trường với facebookId. Khi người dùng được chuyển hướng từ Facebook, bạn có thể lấy facebookId và tìm trong kho dữ liệu để tìm người dùng mà bạn muốn đăng nhập.

Nếu bạn đã có người dùng, bạn sẽ cần phải cho phép họ đăng nhập theo cách bạn thường làm, để bạn biết họ là ai, sau đó gửi họ đến Facebook, lấy lại facebookId và cập nhật đối tượng người dùng của họ. Bằng cách này, họ có thể đăng nhập bằng Facebook vào lần tiếp theo.

Xem thêm: Tải Phần Mềm Lấy Mật Khẩu Email Bằng Mail Passview, Cách Lấy Lại Mật Khẩu Gmail

Một lưu ý nhỏ khác: Người dùng sẽ được hiển thị màn hình trên Facebook yêu cầu cho phép ứng dụng của bạn truy cập vào bất kỳ phạm vi nào bạn yêu cầu, không có cách nào khác (mặc dù bạn càng yêu cầu ít phạm vi hơn, dường như càng ít xâm phạm). Tuy nhiên, điều này chỉ xảy ra khi lần đầu tiên người dùng được chuyển hướng (trừ khi bạn yêu cầu thêm phạm vi sau đó, sau đó nó sẽ hỏi lại).

Related Articles

Back to top button
Close
Close