Hướng dẫn php rest api authentication - xác thực api php còn lại

Nếu bạn ở đây vì bạn muốn kết nối mã PHP của mình với API bên ngoài, vui lòng kiểm tra các cuộc gọi API Curl của tôi với hướng dẫn của PHP & NBSP; Đây là phần 2 của cách kết nối với API bằng Curl trong PHP, vì tôi đã nhận được rất nhiều câu hỏi về cách kết nối nếu API yêu cầu xác thực (UToken) trước.

Nội phân chính

  • Tạo khóa Auth
  • Làm thế nào để sử dụng Auth-Token của chúng tôi?
  • Curl Nhận yêu cầu (với xác thực)
  • Yêu cầu Post Curl (với xác thực)
  • Không có tiêu đề kiểm soát truy cập-cho phép-cho phép-(CORS)
  • API ủy quyền trong PHP như thế nào?
  • Làm thế nào sử dụng OAuth 2.0 cho các cuộc gọi API REST trong PHP?
  • Làm thế nào sử dụng xác thực JWT với API Web trong PHP?
  • Làm cách nào để đặt xác thực cơ bản trong tiêu đề HTTP PHP?

Đi lên: Lần này, tôi sẽ sử dụng JavaScript để linh hoạt hơn. Vì tôi cần thực hiện cuộc gọi API api xác thực trước khi cuộc gọi ban đầu của chúng tôi. Do đó, tôi tạo các cuộc gọi API của mình trong các tệp PHP của riêng mình ở bên cạnh và sẽ nhắm mục tiêu các tệp này bằng ES6 Async/Fetch từ trong trang của tôi. Nếu bạn thấy tôi liên kết với My-Site.com, điều này có nghĩa là tôi tự tạo tệp, trên máy chủ của riêng tôi. Nếu tôi liên kết với api-site.com, điều này có nghĩa là tôi đã gọi API bên ngoài.: This time, I will be using Javascript for more flexibility. As I need to make an ‘authentication’ api call first before our initial GET call. Therefore I create my API calls in my own php files on the side, and will target these files using ES6 async/fetch from within my page. If you see me linking to my-site.com, this means I created the file myself, on my own server. If I’m linking to api-site.com, this means I’m making a call the the external API.

Hướng dẫn php rest api authentication - xác thực api php còn lại

Tạo khóa Auth

Làm thế nào để sử dụng Auth-Token của chúng tôi?auth-token. We need to generate this auth-token first, before we are allowed to make API calls. Normally the API docs should explain how you can generate their auth-token. In my example, I can generate an auth-token by posting my API client ID, client_secret and a login type to their API Auth file.

Curl Nhận yêu cầu (với xác thực)api/auth.php

$curl = curl_init();
$auth_data = array(
	'client_id' 		=> 'XBnKaywRCrj05mM-XXX-6DXuZ3FFkUgiw45',
	'client_secret' 	=> 'btHTWVNMUATHEnF-XXX-2nQabKcKVo3VXtU',
	'grant_type' 		=> 'client_credentials'
);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $auth_data);
curl_setopt($curl, CURLOPT_URL, 'https://api-site.com/oauth/token');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$result = curl_exec($curl);
if(!$result){die("Connection Failure");}
curl_close($curl);
echo $result;

Yêu cầu Post Curl (với xác thực)JS

const apiAuth = async () => {
  try{
    const response  = await fetch('https://my-site.com/api/auth.php');
    if(response.ok){
      return response.json();
    }
    throw new Error(`apiAuth_response: ${response}`);
  }catch(error){
    console.error(`apiAuth: ${error}`);
  }
}

Không có tiêu đề kiểm soát truy cập-cho phép-cho phép-(CORS)

Làm thế nào để sử dụng Auth-Token của chúng tôi?

Curl Nhận yêu cầu (với xác thực)

Curl Nhận yêu cầu (với xác thực)

Yêu cầu Post Curl (với xác thực)api/get_all_reviews.php

https://api-site.com/v1/apps/' . $app_key . '/reviews?utoken=' . $utoken;

Không có tiêu đề kiểm soát truy cập-cho phép-cho phép-(CORS)

if(isset($_POST['access_token'])){	
	$app_key  = 'XBnKaywRCrj05m-XXX-v6DXuZ3FFkUgiw45';
	$utoken = $_POST['access_token'];
	$url = 'https://api-site.com/v1/apps/' . $app_key . '/reviews?utoken=' . $utoken;
	
	$curl = curl_init();
   curl_setopt($curl, CURLOPT_URL, $url);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
   $result = curl_exec($curl);
   if(!$result){die("Connection Failure");}
   curl_close($curl);
   echo $result;
}

API ủy quyền trong PHP như thế nào?JS

const getAllReviews = async () => {
  const auth = await apiAuth();
  const data = {
    access_token: auth.access_token,
    token_type: auth.token_type,
  }
  try{
    $.post({
      type: 'POST',
      url: 'http://my-site.com/api/get_all_reviews.php',
      data: data
    })
    .success(res => {
      const data = JSON.parse(res);
      const reviews = data.reviews;
      displayAllReviews(reviews, $('.review-list'));
    });
  }catch(error){
    console.error(`getAllReviews: ${error}`);
  }
}

Làm thế nào sử dụng OAuth 2.0 cho các cuộc gọi API REST trong PHP?

Yêu cầu Post Curl (với xác thực)

Không có tiêu đề kiểm soát truy cập-cho phép-cho phép-(CORS)api/post_review.php

if(isset($_POST['success'])){	
	$p_url = 'https://product-link.com';
	$email = $_POST['email'];
	
	$post_array = array(
		'appkey' => 'XBnKaywRCrj05m-XXX-v6DXuZ3FFkUgiw45',
		'domain' => 'https://api-site.com',
		'product_url' => $p_url,
		'email' => $email,
		'review_content' => $_POST['message'],
		'review_title' => $_POST['title'],
		'review_score' => $_POST['star_rating_value']
	);
	postReview($post_array);
}else{
	$response = array(
		'response' 	=> 'error',
		'message'	=> 'POST is required to use this function'
	);
}
function postReview($post_array){
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_POST, 1);
	curl_setopt($curl, CURLOPT_POSTFIELDS, $post_array);
	curl_setopt($curl, CURLOPT_URL, 'https://api-site.com/v1/reviews');
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
	
	$result = curl_exec($curl);
	if(!$result){die("Connection Failure");}
	curl_close($curl);
	echo $result;
}

API ủy quyền trong PHP như thế nào?

Làm thế nào sử dụng OAuth 2.0 cho các cuộc gọi API REST trong PHP?JS

function postSiteReview(data, form){
  $.ajax({
    url: 'https://my-site.com/api/post_review.php',
    type: 'post',
    data: data,
    success: function(result){
      let res = JSON.parse(result);
      let message = '';
      if(res.code === 200){
        form.find('.success-message').fadeIn();
      }else{
        if(res.response === 'error'){
          message = res.message;
        }
        if(res.status && res.status.code === 500){
          message = res.status.message;
        }
        $('p.error-msg').text(`Uh ooh.. ${message}`);
      }
    },
    error: function(err){
      console.log('$.ajax error: ' + err);
    }
  });
}

Không có tiêu đề kiểm soát truy cập-cho phép-cho phép-(CORS)

API ủy quyền trong PHP như thế nào?

header("Access-Control-Allow-Origin: https://my-site.com");

Điều này sẽ khắc phục lỗi kiểm soát truy cập mà bạn đang thấy trong JS-Snodole.

Tôi thực sự hy vọng phần này cũng được giải thích tốt. Nếu không, xin vui lòng hỏi trong các ý kiến. (Tôi không thể đảm bảo bạn sẽ nhận được phản hồi).

Hãy cho tôi biết nếu nó làm việc cho bạn. Mã hóa hạnh phúc!
Happy coding!

Thông tin đăng nhập của khách hàng Đầu tiên, bật thông tin đăng nhập của khách hàng vào sau đó Cài đặt nâng cao> Tab Loại cấp trên trang Cài đặt ứng dụng. Tiếp theo, ủy quyền cho ứng dụng cho API đang được sử dụng trên tab Ứng dụng máy cho máy trên trang Cài đặt API.turn on the Client Credentials grant on then Advanced settings > Grant Types tab on the Application settings page. Next, authorize the Application for the API being used on the Machine to Machine Applications tab on the API's Settings page.

Làm thế nào sử dụng OAuth 2.0 cho các cuộc gọi API REST trong PHP?

Sử dụng OAuth 2.0 cho các ứng dụng máy chủ web..

Bước 1: Đặt tham số ủy quyền ..

Bước 2: Chuyển hướng đến máy chủ OAuth 2.0 của Google ..

Bước 3: Google nhắc người dùng đồng ý ..

Bước 4: Xử lý phản hồi máy chủ OAuth 2.0 ..

Bước 5: Mã ủy quyền trao đổi để làm mới và truy cập mã thông báo ..

Làm thế nào sử dụng xác thực JWT với API Web trong PHP?

Khi bạn đã cài đặt trình soạn thảo, hãy chạy công cụ từ thư mục dự án của bạn. Nhà soạn nhạc sẽ hỗ trợ bạn cài đặt Firebase PHP-JWT, thư viện của bên thứ ba để làm việc với JWTS và Apache. Khi thư viện được cài đặt, bạn sẽ cần thiết lập mã đăng nhập xác thực. PHP.

Làm cách nào để đặt xác thực cơ bản trong tiêu đề HTTP PHP?

Khi người dùng đã điền tên người dùng và mật khẩu, URL chứa tập lệnh PHP sẽ được gọi lại với các biến được xác định trước PHP_AUTH_USER, PHP_AUTH_PW và AUTH_TYPE được đặt thành tên người dùng, mật khẩu và loại xác thực. Các biến được xác định trước này được tìm thấy trong mảng $ _Server.PHP_AUTH_USER , PHP_AUTH_PW , and AUTH_TYPE set to the user name, password and authentication type respectively. These predefined variables are found in the $_SERVER array.