Access Token
thì không còn lạ lầm gì với nhiều người dùng làm trang website Hack Like
hay nhiều tư việc bỗ trợ của Token Facebook
Nhóm Facebook đã ra mắt một ứng dụng Facebook API bằng c#, nhưng thư viện này không cung cấp bất kỳ chức năng nào để Nhận mã thông báo truy cập cho API, điều này là bắt buộc để yêu cầu thông tin đã xác thực của người dùng. Vì vậy, các nhà phát triển Facebook API bằng c# chỉ có thể sử dụng thư viện này để truy xuất thông tin công khai và cần triển khai các cách của họ để truy xuất mã thông báo truy cập trước khi yêu cầu thông tin đã xác thực. Để giúp người mới bắt đầu sử dụng nền tảng Facebook dễ dàng hơn một chút, tôi sẽ minh họa một cách dễ dàng để truy xuất mã thông báo truy cập Facebook API C# tại đây với các ví dụ về mã và hướng dẫn từng bước:
Khi nào chúng ta cần mã thông báo truy cập này?
Tôi cho rằng bạn đã biết về việc đăng ký một ứng dụng Facebook mới. Sau khi đăng ký, bạn sẽ nhận được một vài mã có tên là 'App ID', 'API Key' và 'App Secret'. Với những mã này, bạn sẽ có thể bắt đầu sử dụng Facebook API và thực hiện lệnh gọi đến Facebook API cho bất kỳ loại dữ liệu công khai nào. Bạn sẽ chỉ cần lấy mã thông báo truy cập khi bạn định truy cập một số dữ liệu riêng tư của người dùng. Sau đó, người dùng sẽ phải cho phép ứng dụng của bạn sử dụng, điều này sẽ cho phép bạn truy cập vào dữ liệu riêng tư của người dùng đó, mã thông báo truy cập là chìa khóa để mở cánh cửa đó.Lớp học Facebook tùy chọn:
Ở đây tôi sẽ sử dụng hai lớp tùy chỉnh của mình. Một làMYWebRequest
, mà tôi đã thảo luận trước đây khi chỉ cách tạo yêu cầu http bằng csharp ; Một là MyFB, một lớp đơn giản sử dụng thư viện API C# của Facebook và đáp ứng nhu cầu tùy chỉnh của tôi Bạn có thể lấy đoạn mã của lớp
MyWebRequest
từ bài đăng liên quan được liên kết ở trên và đây là mẫu mã cho lớp MyFB
, bạn cũng có thể sử dụng bằng cách nâng cao/mở rộng cho nhu cầu tùy chỉnh của mình:
public class MyFB { private FacebookAPI myFBAPI; private string appId; private string apiKey; private string appSecret; #region Application Settings Properties /// <summary> /// Get And Set Application ID /// </summary> public String ApplicationID { get { return appId; } set { appId = value; } } /// <summary> /// Get And Set API Key /// </summary> public String APIKey { get { return apiKey; } set { apiKey = value; } } /// <summary> /// Get And Set Application Secret /// </summary> public String ApplicationSecret { get { return appSecret; } set { appSecret = value; } } /// <summary> /// Get And Set Access Token /// </summary> public String AccessToken { get { return myFBAPI.AccessToken; } set { myFBAPI.AccessToken = value; } } #endregion //Constructor public MyFB() { myFBAPI = new FacebookAPI(); } public String GetMyName() { try { JSONObject me = myFBAPI.Get("/me"); return me.Dictionary["name"].String; } catch(FacebookAPIException err) { return err.Message; } } public String GetAccessToken(string code) { //create the constructor with post type and few data MyWebRequest myRequest = new MyWebRequest("https://graph.facebook.com/oauth/access_token", "GET", "client_id=" + this.ApplicationID + "&client_secret=" + this.ApplicationSecret + "&code=" + code + "&redirect_uri=http:%2F%2Flocalhost:5176%2F"); string accessToken = myRequest.GetResponse().Split('&')[0]; accessToken = accessToken.Split('=')[1]; return accessToken; } }
Chuyển hướng đến Facebook để cho phép truy cập:
Để cho phép truy cập, Facebook yêu cầu bạn chuyển hướng người dùng đến trang Facebook (được cung cấp tài liệu API của Facebook) nơi người dùng được yêu cầu cho phép thông tin cá nhân của mình truy cập vào ứng dụng. Sau đó quay lại ứng dụng với mã trả lời, sau đó có thể sử dụng để lấy mã thông báo truy cập.(Mã của tôi lấy từ một hàm điều khiển mẫu của ứng dụng asp.net MVC. Hãy điều chỉnh cho phù hợp với ứng dụng của bạn nếu bạn đang sử dụng loại ứng dụng khác. Ngoài ra, tôi đã thử nghiệm ứng dụng trên máy chủ asp.net visual studio cục bộ của mình, nơi tôi sử dụng máy chủ cục bộ làm miền ứng dụng; bạn nên thay đổi thành miền của mình.)
var settings = ConfigurationManager.GetSection("facebookSettings"); MySettings current; string apiKey; if (settings != null) { current = settings as MySettings; apiKey = current.ApiKey; } // ViewData["ApiKey"] = ConfigurationManager.AppSettings["FBAppSecret"]; string code = Request.QueryString["code"]; string appId = WebConfigurationManager.AppSettings["FBAppID"]; string appSecret = WebConfigurationManager.AppSettings["FBAppSecret"]; if (code == "" || code == null) { //request for authentication Response.Redirect("https://graph.facebook.com/oauth/authorize?client_id=" + appId + "&redirect_uri=http://localhost:5176/"); } else { fb = new MyFB(); fb.ApplicationSecret = appSecret; fb.ApplicationID = appId; string accessToken = fb.GetAccessToken(code); fb.AccessToken = accessToken; ViewData["MyName"] = fb.GetMyName(); }
Ở đây, trên mẫu mã ở trên, cấu trúc của lớp MySettings đang được tạo ra từ ý tưởng của bài viết khác của tôi về lưu trữ cài đặt ứng dụng bằng c#, vì vậy hãy xem qua để có ý tưởng rõ ràng và sử dụng phương pháp hay nhất hoặc bạn có thể mã hóa cứng giá trị của cài đặt ngay bây giờ để thử nghiệm nhanh chóng. Đầu tiên, chúng ta đang kiểm tra giá trị biến 'code' từ chuỗi URI vì sau khi trả về từ xác thực Facebook, nó chuyển hướng đến URL đã cho của chúng ta với mã được thêm vào làm một phần của URL. Ban đầu, khi ứng dụng bắt đầu khởi chạy, nó trống, vì vậy giá trị 'code' sẽ là null và điều kiện if sẽ trở thành true, sau đó ứng dụng sẽ chuyển hướng người dùng đến URL OAuth của Facebook để cấp quyền truy cập.
Yêu cầu nội bộ cuối cùng gửi tới Facebook:
Sau khi người dùng chấp nhận và cho phép ứng dụng truy cập dữ liệu riêng tư, ứng dụng sẽ chuyển hướng bao gồm giá trị mã. Lần này, giá trị đó sẽ hợp lệ không phải null và khối "else" sẽ được thực thi. Ở đó, tất cả các thiết lập được phục vụ cho phiên bản lớp MyFB và phương thức 'GetAccessToken' đang được gọi, sau đó tạo Yêu cầu GET tới Facebook cùng với giá trị mã cho mã thông báo truy cập, sau đó facebook trả về một chuỗi chứa mã thông báo truy cập và thời gian hết hạn của nó. Bằng cách phân tích cú pháp chuỗi đó, phương thức trả về mã thông báo truy cập (nó cũng có thể được đặt trực tiếp vào biến mã thông báo truy cập của lớp thay vì trả về, hãy thực hiện nếu bạn cũng muốn sử dụng nó với một số lớp khác). Sau đó, chúng ta được thiết lập hoàn chỉnh để thực hiện các yêu cầu đã xác thực. Ở đây, tôi đã sử dụng yêu cầu '/me' đơn giản và từ kết quả, tên người dùng được hiển thị.Lưu ý dành cho nhà phát triển ứng dụng máy tính để bàn:
Nếu bạn đang tạo ứng dụng máy tính để bàn .NET bằng API Facebook, bạn sẽ phải thực hiện mọi thứ hơi khác một chút. Vui lòng đọc ghi chú chính thức của Facebook về xác thực ứng dụng máy tính để bàn. Ngoài ra, bạn sẽ phải quen thuộc với trình duyệt web Đối với WPF hoặc WebBrowser Đối với Windows Forms, tùy thuộc vào ứng dụng loại máy tính để bàn nào bạn đang tạo. Bạn sẽ cần truyền thêm 2 tham số trong URL khi bật URL trong ứng dụng của mình bằng điều khiển trình duyệt web, đó là "type=user_agent&display=popup
" sẽ trực tiếp gửi lại mã thông báo truy cập mà không cần yêu cầu bổ sung nào khác cần thiết trong ứng dụng web.Tôi hy vọng hướng dẫn này sẽ giúp bạn bắt đầu; hãy cho tôi biết bằng cách bình luận nếu bạn có bất kỳ câu hỏi nào. Ngoài ra, để biết thêm về Facebook c#, vui lòng đọc bài viết khác của tôi về cách bắt đầu với facebook graph api trong c# . Chúc bạn viết mã vui vẻ
Comments