Giao thức Oauth2 trong wordpress

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài Giao thức Oauth2 trong wordpress

OAuth2 là giao thức mà cho phép phần mềm của bạn tương tác với wordpress blog trên wordpress.com rồi cho dù wordpress site có cài đặt trên host của bạn sử dụng Jetpack. Nếu ai chưa biết về giao thức này thì tham khảo tại: OAuth.

Oauth với wordpress blog

Như chúng ta đã biết có 2 bước authentication.
https://public-api.wordpress.com/oauth2/authorize
https://public-api.wordpress.com/oauth2/token
Các cổng này sử dụng tựa như với oauth2 trong wordpress sites của bạn (tải mã nguồn từ wordpress.org). Trước khi bắt đầu phát triển ứng dụng, bạn sẽ có yêu cầu cung cấp các tham số: client id , redirect URI , client secret key . Các tham số này được dùng để làm xác nhận ứng dụng và API hợp pháp truy cập vào wordpress blog.

Trước tiên đăng ký phần mềm của bạn tại : application manager

Nếu bạn chưa tạo phần mềm nào thì bấm vào Create a new application , khai báo tin tức cho ứng dụng:

  • Name: tên ứng dụng, sẽ xuất hiện ở hộp thoại authorization.
  • Description: mô tả về ứng dụng.
  • Website URL: địa điểm website giới thiệu về ứng dụng (trang chủ của ứng dụng)
  • Redirect URL: khi đang authorization sẽ redirect về URL này.
  • Javascript Origins: mục này để trống.
  • Type: loại phần mềm truy cập wordpress API, nếu bạn phát triển trên nền web thì chọn “Web..”, còn nếu phát triển với ứng dụng hoặc mobile thì chọn “Native..” Trong thí dụ này mình tạo web application, chọn kiểu ứng dụng là “Web..”

Nhấn nút Create để tạo ứng dụng. Bạn sẽ nhân được thông báo “Your application has been created.” tức là phần mềm của bạn đã được tạo thành công. Tiếp theo chọn biểu trưng cho ứng dụng, biểu tượng bộc lộ cho ứng dụng khi người dùng sử dụng phần mềm của bạn. Ở đâu đó bạn bắt gặp và sử dụng tính năng oauth mà bạn không biết như facebook,google..Hiển thị tượng trưng trong công đoạn authorize giống hình sau:

ví dụ về oauth2
Với wordpress.com
ví dụ về oauth2 trong wordpress

Mặc định sử dụng biểu trưng wordpress làm tượng trưng cho ứng dụng, thay tượng trưng bằng cách bấm vào nút bên cạnh, trỏ đến hình ảnh làm biểu tượng cho ứng dụng, (hỗ trợ định dạng: *.png, *.jpg,..). Chú ý: tượng trưng có kích cỡ 100×100

Cung cấp thêm thông tin như tên tổ chức/công ty (Organization Name), địa chỉ website của công ty/tổ chức (Organization Website), sau đó nhấn Update.

Ứng dụng đã được khởi tạo và cũng đều có thể sử dụng, bạn sẽ thấy thông tin về phần mềm như tên, biểu trưng ứng dụng. Kéo xuống mục OAuth Information, này là thông tin quan trọng để ứng dụng truy cập wordpress API sử dụng cho những tham số để authorize. Đối với wordpress.org, từ bây giờ trở mình dùng thuật ngữ wordpress.org nghĩa là wordpress site là những website chạy trên host sử dụng mã nguồn wordpress được tải về từ wordpress.org. Nếu bạn chạy wordpress trên host thì có 2 cách, một là sử dụng gói jetpack của wordpress cung cấp hoặc cũng có thể sử dụng qua plugin OAuth2 Complete For WordPress, phần này mình có nhắc đến ở phía dưới.

Ở bên góc trái là những công cụ và bài viết hữu ích hỗ trợ tạo phần mềm một cách nhanh chóng.

Receiving an Access Token

Đây là bước đòi hỏi để truy cập tài nguyên và dữ liệu của người dùng wordpress, khi sử dụng bất kỳ API nào bạn có thể luôn phải cung cấp thông tin access token. Access token sử dụng cho từng blog với mỗi tài khoản trên wordpress.com. Điều này còn có nghĩa bạn sẽ truy cập vào mỗi blog sử dụng một access token cho blog đó. Để lấy tin tức access token, làm theo quy trình sau:

Bước 1:

Authorize URL

Lấy mã code, là bước trước mắt trong quá trình authorize, phần mềm sẽ truy cập vào địa chỉ:

 https://public-api.wordpress.com/oauth2/authorize?client_>  

Trong đó:

  • client_id: client id của ứng dụng.
  • redirect_uri: URL chuyển hướng.
  • response_type: điền “code” hoặc “token”. Vi đây là bước lấy code do đó ta điền là “code”

Các tham số này lấy ở phần tin tức ứng dụng cung cấp, xem ở bước tạo phần mềm mình đã nói ở trên.

Ví dụ địa điểm authorize có dạng:

 https://public-api.wordpress.com/oauth2/authorize?client_>  

Nhập địa chỉ này trên trình duyệt, đây là trang ứng dụng đòi hỏi truy cập vào wordpress blog của bạn, nếu bạn đồng ý phần mềm này sử dụng dữ liệu trên blog của bạn thì nên nhập username và password trên wordpress.com để chuyển qua bước tiếp theo.

Sau khi login thành công, một bản kê các wordpress blogs được hiện ra, bạn chọn một blog để phần mềm làm việc.
các bước authorize wp blog step1

Nhấn Authorize , wordpress sẽ chuyển hướng về địa điểm website của ứng dụng. Địa chỉ này lấy ở tham số redirect_uri cung cấp ở bước trước https://public-api.wordpress.com/oauth2/authorize?client_> https://www.hoangweb.com/test/4.php&response_type=code

Tham số redirect_uri phải trùng “Redirect URL” bạn khai báo khi tạo ứng dụng. Nếu không khớp bạn có thể sửa lại thuộc tính này bằng phương pháp truy cập https://developer.wordpress.com/apps, chọn app bạn đang sử dụng và nhấn vào Manage Settings để cấu hình lại cho ứng dụng. Nhập lại mục Redirect URI và các thông tin khác nếu muốn , nhấn Update để cập nhật lại.

Bạn sẽ nhận lỗi invalid_request nếu như cung cấp sai redirect_uri.
invalid_request-authorize-wordpress

Nếu thành công, wordpress sẽ chuyển về địa điểm của phần mềm kèm tham số code , truyền vào URL. Ví dụ:

 http://example.com/test.php?code=ax6Y7IqzPI&state 

Bước tiếp theo, tiến hành request token . Truyền các tham số dưới dạng POST vào URL:
https://public-api.wordpress.com/oauth2/token.

   $curl     =     curl_init    (     "https://public-api.wordpress.com/oauth2/token"     )    ;     curl_setopt    (     $curl    ,   CURLOPT_POST  ,     true     )    ;     curl_setopt    (     $curl    ,   CURLOPT_POSTFIELDS  ,     array    (     'client_redirect_uri'     =>    your_redirect_url  ,     'client_secret'     =>    your_client_secret_key  ,     'code'     =>      $_GET    [    'code'    ]    ,     // The code from the previous request     'grant_type'     =>      'authorization_code'     )     )    ;     curl_setopt    (     $curl    ,   CURLOPT_RETURNTRANSFER  ,     1    )    ;     $auth     =     curl_exec    (     $curl     )    ;     $secret     =     json_decode    (    $auth    )    ;     $access_key     =     $secret    ->     access_token    ;   

Tham số được yêu cầu là client_id , redirect_uri , client_secret , code tham số này được ra đời ở bước /authorize , gán giá trị của tham số code có trên tham số URL vào tham số này. Thiết lập giá trị "grant_type"=> "authorization_code" . Nếu mọi thứ hoạt động đúng, bạn sẽ nhận được cấu trúc JSON trả về chứa token và tin tức về blog:

 { "access_token": "YOUR_API_TOKEN", "blog_id": "blog id", "blog_url": "blog url", "token_type": "bearer" } 

Ví dụ, đoạn php trên sẽ trả về chuỗi JSON giống như sau:

 {"access_token":"ArVvF*sgFku^w&a2SuLXK0bvc^3A(gPv*akjgcs1FD3Ic%I0sqlpeilitHR*aWjA","token_type":"bearer","blog_id":"27708843","blog_url":"http://hquery.wordpress.com","scope":""} 

Thông tin này rất quan trọng, bạn nên lưu vào biến SESSION (vd trong php), Mỗi giao dịch API của wordpress blog user tới blog của bạn phải yêu cầu access_token .

Test từ người nắm giữ ứng dụng

Bạn có thể test hoạt động của phần mềm trước lúc xuất bản, để xem ứng dụng có hoạt động đúng không. Sử dụng code authenticate cho wordpress app sau đây:

   $curl     =     curl_init    (     "https://public-api.wordpress.com/oauth2/token"     )    ;     curl_setopt    (     $curl    ,   CURLOPT_POST  ,     true     )    ;     curl_setopt    (     $curl    ,   CURLOPT_POSTFIELDS  ,     array    (     'client_client_secret'     =>      $client_secret    ,     //tài khoản wordpress.com chứa phần mềm cần test     'username'     =>      '[email protected]'    ,     'password'     =>      'xxxx'    ,     )     )    ;     curl_setopt    (     $curl    ,   CURLOPT_RETURNTRANSFER  ,     1    )    ;     $auth     =     curl_exec    (     $curl     )    ;   

Nếu tài khoản wordpress.com chứa ứng dụng đang được bảo mật bởi 2 bước xác nhận (2-step authentication), các ứng dụng được tạo bởi tài khoản bảo mật này, có thể được authenticate sử dụng tham số 'grant_type'=> 'password' . Chúng ta phải thực hiện thêm 1 bước là tạo mật khẩu cho ứng dụng. Để làm điều này, truy cập vào https://wordpress.com/settings/security/, kéo xuống dưới ban thấy mục “Application Passwords”, tại ô Application Name -> nhập tên của ứng bạn sẽ tạo mật khẩu rồi nhấn vào Generate Password.
applicationpw wordpress

Bạn sẽ thấy mật khẩu được sinh ra, copy mật khẩu này vào tham số ‘password’ như dưới đây:

   $curl     =     curl_init    (     "https://public-api.wordpress.com/oauth2/token"     )    ;     curl_setopt    (     $curl    ,   CURLOPT_POST  ,     true     )    ;     curl_setopt    (     $curl    ,   CURLOPT_POSTFIELDS  ,     array    (     'client_client_secret'     =>    your_client_secret_key  ,     'grant_type'     =>      'password'     'username'     =>      '[email protected]'    ,     'password'     =>      'ghdc gym5 d2nu 3xxh'    ,     )     )    ;     curl_setopt    (     $curl    ,   CURLOPT_RETURNTRANSFER  ,     1    )    ;     $auth     =     curl_exec    (     $curl     )    ;     $auth     =     json_decode    (    $auth    )    ;     $access_key     =     $auth    ->     access_token    ;   

Khuyến nghị : Đoạn code trên sử dụng vào việc test sự hoạt động của app.

Sau khi đã thiết lập password cho app, ở ngay phía dưới sẽ hiển thị các ứng dụng đã được kích hoạt mật khẩu. Nếu không thích phần mềm hoạt động nữa thì bấm vào Remove để xóa mật khẩu của ứng dụng.
wordpress applications-active-password

Chú ý : wordpres authentication không làm việc trên localhost, bạn cần up lên host mới hoạt động được. Sau khi up lên host một số bạn sẽ quên sửa lại tin tức redirect_uri của phần mềm để khớp cùng nhau và sửa tham số này cả ở trong code.

Sử dụng API

Theo thứ tự để truy cập vào tài nguyên của api, bạn cần truyền access token vào tin tức header (sử dụng BEARER token) trong qui trình gọi API.

Ví dụ tạo bài viết mới sử dụng api: https://developer.wordpress.com/docs/api/1/post/sites/%24site/posts/new/

 jQuery  .  ajax  (     {   url  :     'https://public-api.wordpress.com/rest/v1/sites/'     +   site_id   +     '/posts/new'    ,   type  :     'POST'    ,   data  :     {   content  :     'testing test'     }    ,   beforeSend   :     function    (   xhr   )     {   xhr  .  setRequestHeader  (     "Authorization"    ,     "BEARER "     +   access_token   )    ;     }    ,   success  :     function    (   response   )     {     // response     }     }     )    ;   

Tải source code demo

WordPress cung cấp rất nhiều API bạn thỏa sức thiết kế phần mềm của mình nhằm phục vụ cho công việc tốt hơn. Tham khảo các API tại: Sử dụng WordPress API

Đọc bài viết tiếp theo: Cách tạo oauth2 trong wordpress site (wordpress.org)

Chúc bạn thành công.

Bài viết Giao thức Oauth2 trong wordpress được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang