Hãy đi từng bước ở đây. Có vẻ như bạn đang cố sử dụng OAuth chỉ để xác thực, nhưng trước khi bạn có thể làm như vậy, bạn cần lấy Mã thông báo truy cập sẽ được sử dụng để xác thực khi bạn thực hiện các lệnh gọi API.
Vì đây là sử dụng OAuth phiên bản 1, để có được Mã thông báo truy cập, bạn phải làm như sau:
- Đầu tiên, thiết lập một ứng dụng, thực hiện cuộc gọi đến trang web để nhận Mã thông báo yêu cầu (thông tin xác thực tạm thời) bằng ID khách hàng và Bí mật cho ứng dụng
- Thứ hai, thực hiện cuộc gọi đến trang web để Cấp quyền cho ứng dụng bằng Mã yêu cầu từ bước đầu tiên (hướng tới người dùng, xem bên dưới).
- Thứ ba, sau khi ủy quyền đã được hoàn thành, sau đó bạn thực hiện cuộc gọi đến trang web để nhận Mã thông báo truy cập (bây giờ ứng dụng đó đã được cấp phép)
Tôi khuyên bạn nên sử dụng Postman cho một vài bước đầu tiên, vì chúng chỉ cần được hoàn thành một lần. Postman cũng sẽ xử lý tạo ra timestamp
, nonce
và oauth signature
, vì vậy nếu bạn không sử dụng một thư viện OAuth, sau đó bạn hoàn toàn nên sử dụng Postman. Khi bạn có Mã thông báo truy cập, bạn có thể thực hiện các cuộc gọi qua CURL mà không cần bất kỳ thư viện nào.
https://www.getpostman.com/
Bước đầu tiên (thiết lập ứng dụng)
Cài đặt plugin WP OAuth 1, kích hoạt, sau đó chọn mục menu goto trong Người dùng> Ứng dụng . Thêm ứng dụng mới, điền tên và mô tả. Đối với cuộc gọi lại, URL để chuyển hướng người dùng đến (sau khi ủy quyền) hoặc oop
cho luồng ngoài băng sẽ chuyển hướng đến một trang nội bộ hiển thị mã thông báo xác minh (thay vì chuyển hướng).
https://github.com/WP-API/OAuth1/blob/master/docs/basics/Registering.md
Để tiến hành bước thứ hai, một cuộc gọi cần được thực hiện đến trang web của bạn, sử dụng ID khách hàng và Bí mật khách hàng từ ứng dụng đã tạo, để có được thông tin xác thực tạm thời (Mã thông báo yêu cầu).
Mở Postman, tạo một cuộc gọi mới http://website.com/oauth1/request
, nhấp vào tab Ủy quyền, chọn OAuth 1.0 từ danh sách thả xuống, nhập Khóa khách, Bí mật khách hàng, đặt phương thức chữ ký thành HMAC-SHA1
, bật thêm thông số vào tiêu đề, mã hóa chữ ký oauth , sau đó bấm Cập nhật yêu cầu
Người đưa thư sẽ tự động tạo chữ ký, nonce và dấu thời gian cho bạn và thêm chúng vào tiêu đề (bạn có thể xem trong tab Tiêu đề).
Nhấp vào Gửi và bạn sẽ nhận được phản hồi bao gồm oauth_token
và oauth_token_secret
:
Các giá trị này sẽ được sử dụng trong bước tiếp theo để ủy quyền cho ứng dụng trong tài khoản người dùng WordPress của bạn.
Bước thứ hai (ủy quyền ứng dụng)
Bước ủy quyền chỉ cần được hoàn thành một lần, bước này là hướng tới người dùng và là bước mà mọi người đều quen thuộc. Bước này là bắt buộc vì bạn đang sử dụng OAuth1 và ứng dụng cần được liên kết với tài khoản người dùng WordPress. Hãy nghĩ đến khi một trang web cho phép bạn đăng nhập bằng Facebook ... họ sẽ đưa bạn đến Facebook nơi bạn đăng nhập và nhấp vào "Ủy quyền" ... việc này cần được thực hiện, chỉ cần thông qua trang web WordPress của bạn.
Tôi khuyên bạn nên sử dụng Trình duyệt web của mình cho bước này, vì bạn có thể dễ dàng đặt các biến trong URL và điều này cung cấp trang "Ủy quyền" để ủy quyền cho ứng dụng.
Mở trình duyệt web của bạn và nhập URL vào trang web của bạn, như thế này:
http://website.com/oauth1/authorize
Bây giờ hãy thêm vào URL này, oauth_consumer_key
(ID khách hàng) oauth_token
và oauth_token_secret
(từ bước trước). Trong ví dụ của tôi đây là URL đầy đủ:
http://website.com/oauth1/authorize?oauth_consumer_key=TUPFNj1ZTd8u&oauth_token=J98cN81p01aqSdFd9rjkHZWI&oauth_token_secret=RkrMhw8YzXQljyh99BrNHmP7phryUvZgVObpmJtos3QExG1O
Khi bạn nhấp vào Ủy quyền, bạn sẽ nhận được một màn hình khác với mã thông báo xác minh. Trong ví dụ của tôi, đây là mã thông báo xác minh được trả vềE0JnxjjYxc32fMr2AF0uWsZm
Bước thứ ba (nhận mã thông báo truy cập)
Bây giờ chúng tôi đã ủy quyền cho ứng dụng, chúng tôi cần thực hiện một cuộc gọi cuối cùng để nhận Mã thông báo ủy quyền sẽ được sử dụng để thực hiện tất cả các cuộc gọi API của bạn. Giống như bước đầu tiên tôi sẽ sử dụng Postman (vì chữ ký bắt buộc phải là HMAC-SHA1), và việc hoàn thành các bước này dễ dàng hơn gấp 100 lần.
Mở lại Postman và thay đổi URL thành http://website.com/oauth1/access
Đảm bảo thêm Mã thông báo và Mã thông báo bí mật (các giá trị từ bước đầu tiên), sau đó nhấp vào Params để hiển thị các hộp bên dưới URL. Ở loại bên trái trong oauth_verifier và bên phải, nhập mã từ bước thứ hai, Mã xác minh
Đảm bảo nhấp vào Yêu cầu cập nhật, sau đó nhấp vào Gửi và bạn sẽ nhận được phản hồi lại oauth_token
và oauth_token_secret
... đây là những gì bạn cần để thực hiện các cuộc gọi API của mình! Hủy những cái ban đầu từ bước 1, lưu những cái này trong mã của bạn hoặc nơi nào khác an toàn.
Sau đó, bạn có thể thực hiện cuộc gọi API đến trang web của mình, đặt tiêu đề bằng mã thông báo được trả lại và bí mật mã thông báo.
Bạn có thể vượt qua nhiều cách này, thông qua tiêu đề Ủy quyền, trong các tham số GET hoặc POST (nếu được mã hóa dưới dạng application / x-www-form-urlencoding). Hãy nhớ rằng bạn PHẢI vượt qua chữ ký, dấu thời gian và nonce. Tôi đã không nhận ra câu trả lời này sẽ mất bao lâu, vì vậy tôi sẽ cập nhật vào ngày mai với ví dụ về việc thực hiện điều đó với mã của bạn.
Tôi thực sự khuyên bạn nên cài đặt Nhật ký API còn lại để bạn có thể xem nhật ký các lệnh gọi API và xem những gì đã được gửi, trả lại, v.v. Điều này sẽ giúp gỡ lỗi rất nhiều.
https://github.com/petenelson/wp-rest-api-log