Mã truy cập cho công nghệ của Meta

Mã truy cập là một chuỗi mờ xác định người dùng, ứng dụng hoặc Trang. Ứng dụng có thể dùng mã này để thực hiện lệnh gọi API đồ thị. Mã này có chứa thông tin về thời gian hết hạn mã và ứng dụng đã tạo mã. Do hoạt động kiểm tra quyền riêng tư, phần lớn lệnh gọi API trên các ứng dụng trên Meta đều cần có mã truy cập. Có nhiều loại mã truy cập để hỗ trợ các trường hợp sử dụng khác nhau và một số phương thức để lấy mã truy cập.

Loại mã truy cậpMô tả

Mã truy cập ứng dụng

Mã truy cập ứng dụng được dùng để đọc và sửa đổi cài đặt ứng dụng. Mã này được tạo bằng khóa bí mật của ứng dụng trên Meta, sau đó được dùng trong các lệnh gọi để thay đổi cài đặt trong toàn ứng dụng. Bạn lấy mã truy cập ứng dụng qua một lệnh gọi giữa các máy chủ.

Mã ứng dụng

Mã ứng dụng được dùng để truy cập API ở cấp độ ứng dụng. Bạn có thể nhúng mã này vào ứng dụng gốc hoặc ứng dụng dành cho máy tính để xác định ứng dụng của mình. Mã ứng dụng không phải là thông tin nhận dạng bí mật vì mã này được nhúng trong các ứng dụng. Bạn có thể tìm mã ứng dụng của mình trong bảng điều khiển ứng dụng trên Meta.

Mã truy cập Trang

Mã truy cập Trang được dùng để đọc, ghi và sửa đổi dữ liệu thuộc một Trang Facebook. Để lấy mã truy cập Trang, bạn cần bắt đầu bằng cách lấy mã truy cập dành cho người dùng rồi sử dụng mã đó để lấy mã truy cập Trang thông qua API Đồ thị.

Mã truy cập dành cho người dùng hệ thống

Mã truy cập dành cho Người dùng hệ thống được dùng nếu ứng dụng của bạn thực hiện các hành động tự động, theo lập trình đối với Trang hoặc Đối tượng quảng cáo của khách hàng doanh nghiệp mà không phải dựa vào dữ liệu nhập của người dùng ứng dụng hay yêu cầu xác thực lại sau này.

Mã truy cập dành cho người dùng

Mã truy cập dành cho Người dùng được dùng nếu ứng dụng của bạn thực hiện các hành động theo thời gian thực, dựa trên dữ liệu nhập của người dùng. Bạn cần có loại mã truy cập này bất cứ khi nào ứng dụng gọi API để đọc, sửa đổi hoặc ghi dữ liệu trên Facebook của một người dùng cụ thể thay mặt họ. Mã truy cập dành cho Người dùng thường được lấy qua hộp thoại đăng nhập và người dùng cần phải cho phép ứng dụng của bạn lấy mã đó.

Mã truy cập dành cho người dùng

Mặc dù mỗi nền tảng tạo mã truy cập thông qua các API khác nhau, nhưng mọi nền tảng đều tuân theo chiến lược cơ bản để lấy mã truy cập dành cho người dùng:

Mã ngắn hạn và mã dài hạn

Mã truy cập dành cho người dùng có 2 dạng: mã ngắn hạn và mã dài hạn. Mã ngắn hạn thường có thời hạn khoảng 1 hoặc 2 giờ, trong khi mã dài hạn thường có thời hạn khoảng 60 ngày. Bạn đừng nên tin rằng các thời hạn này sẽ giữ nguyên không đổi. Thời hạn có thể thay đổi mà không có cảnh báo hoặc có thể hết hạn sớm. Hãy xem thêm trong phần xử lý lỗi.

Mã truy cập được tạo qua phương thức đăng nhập web là mã ngắn hạn. Tuy nhiên, bạn có thể chuyển các mã đó thành mã dài hạn bằng cách thực hiện lệnh gọi API phía máy chủ cùng với khóa bí mật của ứng dụng.

Các ứng dụng di động dùng iOS SDK và Android SDK của Facebook sẽ mặc định lấy mã dài hạn.

Các ứng dụng có Quyền truy cập tiêu chuẩn vào API Marketing của Facebook khi dùng mã dài hạn sẽ nhận được mã dài hạn không có thời hạn. Những mã này vẫn bị vô hiệu hóa vì các lý do khác nhưng sẽ không hết hạn chỉ dựa trên thời gian. Điều này cũng đúng đối với mã truy cập cho Người dùng hệ thống trong Trình quản lý kinh doanh.

Mã có thể di chuyển

Một khía cạnh quan trọng cần hiểu về mã truy cập là hầu hết các mã này đều di chuyển được. Tuy nhiên, Apple không cho phép chuyển mã đến máy chủ. Nếu không, sau khi có mã truy cập, bạn có thể dùng mã này để thực hiện lệnh gọi từ một ứng dụng di động, trình duyệt web hoặc từ máy chủ của bạn đến máy chủ của Facebook. Nếu mã được lấy trên một ứng dụng, bạn có thể chuyển mã đó xuống máy chủ của mình và dùng trong lệnh gọi giữa các máy chủ. Nếu mã được lấy qua lệnh gọi máy chủ, bạn cũng có thể chuyển mã đó lên một ứng dụng rồi thực hiện lệnh gọi từ ứng dụng đó.

Việc chuyển mã giữa ứng dụng và máy chủ phải được thực hiện an toàn qua HTTPS để đảm bảo tính bảo mật cho tài khoản của người dùng. Đọc thêm về ý nghĩa của việc chuyển mã giữa các ứng dụng và máy chủ.

Mỗi nền tảng có những phương thức khác nhau để kích hoạt quy trình này, cũng như thêm chức năng để quản lý mã truy cập thay mặt nhà phát triển và người cấp quyền:

Android

Facebook SDK dành cho Android tự động quản lý các mã truy cập dành cho người dùng thông qua lớp com.facebook.AccessToken. Bạn có thể tìm hiểu thêm về cách lấy mã truy cập dành cho người dùng bằng cách triển khai phương thức Đăng nhập bằng Facebook dành cho Android. Bạn có thể truy xuất mã truy cập dành cho người dùng bằng cách kiểm tra Session.getCurrentAccessToken.

Mã mẫu

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    accessToken = AccessToken.getCurrentAccessToken();
}

iOS

Facebook SDK dành cho iOS tự động quản lý các mã truy cập dành cho người dùng thông qua lớp FBSDKAccessToken. Bạn có thể tìm hiểu thêm về cách lấy mã truy cập dành cho người dùng bằng cách triển khai phương thức Đăng nhập bằng Facebook dành cho iOS. Bạn có thể truy xuất mã truy cập bằng cách kiểm tra FBSDKAccessToken.currentAccessToken.

Mã mẫu

- (void)viewDidLoad
{
  [super viewDidLoad];
  NSString *accessToken = [FBSDKAccessToken currentAccessToken];
}

JavaScript

Facebook SDK dành cho JavaScript tự động lấy và lưu giữ mã truy cập dành cho người dùng trong cookie trình duyệt. Bạn có thể truy xuất mã truy cập dành cho người dùng bằng cách thực hiện lệnh gọi đến FB.getAuthResponse để phản hồi trả về thuộc tính accessToken.

Mã mẫu

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var accessToken = response.authResponse.accessToken;
  } 
} );

Vui lòng truy cập vào tài liệu về Facebook Web SDK để xem một mã mẫu đầy đủ.

Web (không có JavaScript)

Khi xây dựng một ứng dụng web mà không có Facebook SDK dành cho JavaScript, bạn cần tạo một mã truy cập bằng các bước nêu trong tài liệu đó.

Mã truy cập ứng dụng

Mã truy cập ứng dụng được dùng để gửi yêu cầu đến API của Facebook thay mặt ứng dụng chứ không phải thay mặt người dùng. Mã này có thể dùng để sửa đổi thông số của ứng dụng, tạo và quản lý người dùng thử nghiệm hoặc đọc thông tin chi tiết của ứng dụng.

Giới hạn

Một số dữ liệu người dùng - thường hiển thị với ứng dụng gửi yêu cầu bằng mã truy cập dành cho người dùng - không phải lúc nào cũng hiển thị cùng mã truy cập ứng dụng. Nếu đang đọc dữ liệu người dùng và dùng mã đó trong ứng dụng của mình, bạn nên sử dụng mã truy cập dành cho người dùng thay vì mã truy cập ứng dụng.

Mã truy cập ứng dụng bị xem là không an toàn nếu ứng dụng được đặt thành Native/Desktop trong phần Cài đặt nâng cao của Bảng điều khiển ứng dụng. Do đó, loại mã này sẽ không hoạt động với các lệnh gọi API. Đó là vì chúng tôi giả định rằng ứng dụng gốc hoặc ứng dụng dành cho máy tính sẽ được nhúng khóa bí mật của ứng dụng ở đâu đó (nên mã truy cập ứng dụng được tạo bằng khóa bí mật đó sẽ không an toàn).

Tạo mã truy cập ứng dụng

Để tạo mã truy cập ứng dụng, bạn cần có:

Mã mẫu

curl -X GET "https://graph.facebook.com/oauth/access_token
  ?client_id={your-app-id}
  &client_secret={your-app-secret}
  &grant_type=client_credentials"

Lệnh gọi này sẽ trả về một mã truy cập ứng dụng có thể dùng thay thế mã truy cập dành cho người dùng để thực hiện lệnh gọi API như đã nói ở trên. Xin nhắc lại, để bảo mật, bạn tuyệt đối không nên mã hóa cứng mã truy cập ứng dụng vào mã phía ứng dụng. Nếu bạn làm vậy, tất cả những người đã tải trang web hoặc giải mã ứng dụng của bạn sẽ có toàn quyền truy cập vào khóa bí mật của ứng dụng nên có khả năng sửa đổi ứng dụng đó. Điều này ngụ ý rằng phần lớn thời gian, bạn sẽ chỉ sử dụng mã truy cập ứng dụng trong lệnh gọi giữa các máy chủ.

Lưu ý rằng vì yêu cầu này sử dụng khóa bí mật của ứng dụng, nên bạn không được tạo khóa này trong mã phía ứng dụng hoặc trong mã nhị phân của ứng dụng mà có thể giải mã được. Quan trọng là bạn tuyệt đối không nên chia sẻ khóa bí mật của ứng dụng với bất kỳ ai. Do đó, bạn chỉ nên thực hiện lệnh gọi API này bằng mã phía máy chủ.

Có một phương thức khác để thực hiện lệnh gọi đến API Đồ thị không yêu cầu sử dụng mã truy cập ứng dụng được tạo. Bạn chỉ cần chuyển ID ứng dụng và khóa bí mật của ứng dụng ở dạng thông số access_token khi thực hiện lệnh gọi:

curl -i -X GET "https://graph.facebook.com/{api-endpoint}&access_token={your-app_id}|{your-app_secret}"   

Lựa chọn sử dụng mã truy cập được tạo hay phương thức này phụ thuộc vào nơi bạn giấu khóa bí mật của ứng dụng.

Mã truy cập Trang

Mã truy cập Trang được dùng trong các lệnh gọi API Đồ thị để quản lý Trang Facebook. Để tạo mã truy cập trang, quản trị viên trang phải cấp cho ứng dụng của bạn quyền truy cập Trang hoặc các quyền cần thiết. Sau khi được cấp quyền, bạn có thể truy xuất mã truy cập Trang bằng cách sử dụng mã truy cập dành cho người dùng có các quyền cần thiết.

Mã mẫu

curl -i -X GET "https://graph.facebook.com/{your-user-id}/accounts?access_token={user-access-token}" 

Lệnh gọi này sẽ trả về danh sách các trang mà bạn có vai trò cùng với thông tin về từng Trang như hạng mục Trang, các quyền cụ thể của bạn trên từng Trang cũng như mã truy cập Trang.

{
  "data": [
    {
      "access_token": "EAACEdE...",
      "category": "Brand",
      "category_list": [
        {
          "id": "1605186416478696",
          "name": "Brand"
        }
      ],
      "name": "Ash Cat Page",
      "id": "1353269864728879",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
    {
      "access_token": "EAACEdE...",
      "category": "Pet Groomer",
      "category_list": [
        {
          "id": "163003840417682",
          "name": "Pet Groomer"
        },
        {
          "id": "2632",
          "name": "Pet"
        }
      ],
      "name": "Unofficial: Tigger the Cat",
      "id": "1755847768034402",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT"
      ]
    }
  ]
}

Với mã truy cập trang, bạn có thể thực hiện các lệnh gọi API thay mặt Trang. Ví dụ: bạn có thể đăng nội dung cập nhật trạng thái lên một Trang (chứ không phải trên dòng thời gian của người dùng) hoặc đọc dữ liệu Thông tin chi tiết Trang.

Mỗi Trang, quản trị viên và ứng dụng sẽ có một mã truy cập Trang riêng.

Mã truy cập ứng dụng

Kể từ SDK phiên bản 13.0 dành cho iOS và Android (sẽ được phát hành vào đầu năm 2022), tất cả các lệnh gọi đến API Đồ thị đều phải có Mã ứng dụng.

Giống như Mã truy cập ứng dụng, Mã ứng dụng gửi các yêu cầu API Đồ thị thay mặt cho ứng dụng, chứ không phải người dùng.

Không giống như các loại mã khác, bạn không thể chỉ dùng riêng Mã truy cập ứng dụng trong các yêu cầu mà phải kết hợp với ID ứng dụng của mình. Để thực hiện điều này, hãy thêm mã của bạn vào cuối ID ứng dụng, phân tách bằng dấu gạch đứng (|):

{app-id}|{client-token}

Ví dụ:

access_token=1234|5678

Hãy làm theo các bước sau để lấy Mã truy cập ứng dụng cho một ứng dụng:

  1. Đăng nhập vào tài khoản nhà phát triển của bạn.
  2. Trên trang Ứng dụng, chọn một ứng dụng để mở bảng điều khiển của ứng dụng đó.
  3. Trên Bảng điều khiển, chuyển đến phần Cài đặt > Nâng cao > Bảo mật > Mã ứng dụng.

Độ dài mã truy cập

Lưu ý rằng độ dài của tất cả các loại mã truy cập sẽ thay đổi theo thời gian khi Facebook thực hiện thay đổi đối với nội dung được lưu trữ và cách mã hóa nội dung đó. Mã này có thể dài hơn và ngắn hơn theo thời gian. Vui lòng sử dụng loại dữ liệu có thể thay đổi độ dài mà không có kích thước tối đa cụ thể để lưu trữ mã truy cập.

Tìm hiểu thêm