blog công nghệ

Tôi đã thử hợp tác WebexOAuth với Laravel với mục tiêu tốc độ bùng nổ 30 phút

Kanno
Xin chào, tôi là SUGANO, Tổng Giám đốc Bộ phận Phát triển Hệ thống tại Sun-El Co., Ltd.

Gần đây tôi đã sử dụng API Webex rất nhiều nên tôi muốn viết điều gì đó về nó và sau đó tôi nhận được lời mời tham gia AdventCalender.Tôi sẽ viết cho AdventCalender.

Tôi đã nghĩ về nhiều chủ đề khác nhau, nhưng giai đoạn đầu tiên của Webex làTriển khai tích hợp Webex bằng Laravel “nhanh như chớp”Tôi muốn thử nó.

Tại saoLaravelHay đúng hơn,Bởi vì đối với các hệ thống đơn giản, tốt về MPA thì Laravel là thứ tôi giỏi nhất. Đối với SPA, tôi thường sử dụng Django + Nuxt.js.

Vì thế lần này

  1. Xác thực Oauth2 với Laravel
  2. Lấy danh sách không gian

Chúng tôi sẽ thực hiện "tốc độ bùng nổ" trong 30 phút nữa!

Tuy nhiên, điều này không bao gồm thời gian xây dựng môi trường Laravel và thời gian tạo tài khoản Webex.

Điều kiện tiên quyết/mục tiêu

Nó nhắm mục tiêu sau:

Đối tượng mục tiêu mà bài viết này nên được sử dụng làm tài liệu tham khảo

  • Những người đã chạm vào Laravel
  • Những người đã chạm tới Webex nhưng chưa từng phát triển API

Nói cách khác"Còn việc phát triển bằng WebexAPI thì sao? những người có nghi ngờTuy nhiên, tôi hy vọng rằng bạn sẽ hiểu nội dung và nghĩ, “Ồ, nó là như thế này.”

môi trường

Lần này tôi sẽ sử dụng Laravel8. Vì tôi không muốn làm ô nhiễm địa phương của mình (Mac) laradock Dựa trênChúng tôi sử dụng môi trường Docker tùy chỉnh có thể được sử dụng để triển khai sản xuất.

Tuy nhiên, nếu bạn đã cài đặt Composer cục bộ,Cánh buồm LaravelTôi nghĩ bạn có thể sử dụng .

Dưới đây là môi trường nơi tôi thực hiện lần này.

  • Debian 11.1
  • PHP 8.1
  • Laravel 8
  • Tài khoản Webex [Miễn phí]

Tài khoản Webex có thể miễn phí.Một số tính năng, chẳng hạn như GuestIssuer, không thể sử dụng được nếu không có phiên bản trả phí.thành phố Tsu, là nơiHầu hết các chức năng cơ bản như tạo không gian và đăng tin đều có thể được sử dụng ở phiên bản miễn phí..

Đi thôi nào!

Đăng nhập (15 phút)

Đầu tiên, tạo phần đăng nhập.

Khi liên kết API với Webex,Cách sử dụng botCách xác thực bằng Oauth2Có hai.

Cả hai đều có mặt hại và mặt lợi.Trong trường hợp bot, Mã thông báo cho bot sẽ được phát hành, vì vậy tất cả những gì bạn cần làm là xác thực người mang.chỉ một.

Có rất nhiều thông tin về cách thực hiện việc này với bot, vì vậy tôi sẽ bỏ qua nó.

Hãy bắt đầu với Webex dành cho nhà phát triển Đăng nhập để tạo thông tin cần thiết để xác thực.

Với những ai đã từng sử dụng xác thực Oauth2 khác như Facebook thì mình nghĩ đó là mục cài đặt quen thuộc.

Nếu bạn không biết,Cộng đồng CiscoHãy tham khảo trang của

Chuyển hướng đích

Đặt đích được chuyển hướng sau khi xác thực.

Vì lần này tôi đang chạy nó cục bộ nên tôi đã làm như sau:

http://localhost:8080/login/webex/callback

Cài đặt chuyển hướng

Hãy cẩn thận với phạm vi

Có một điểm ở đây. nó làphạm vilà. Chi tiết sẽ được giải thích sau.Không sử dụng spark:all, hãy đảm bảo đặt spark:people_read.

Trong bài viết này, chúng tôi sẽ hiển thị danh sách các phòng, vì vậy chúng tôi đã thực hiện như sau.

Hãy cẩn thận với phạm vi

Với cái nàyCác bước chuẩn bị xung quanh môi trường Webex đều ổn.

Cài đặt gói xác thực

Lần này, phần xác thực làSử dụng laravel/uiTôi sẽ quyết định.Gói xác thực đã được cập nhật trong Laravel 8.,Trong Jetstream mới được giới thiệu, CSS đã được thay đổi từ Bootstrap thành Tailwind..

Tuy nhiên, tôi chưa đích thân làm điều đó nên tôi sẽ sử dụng laravel/ui, thứ mà tôi đã sử dụng từ lâu.

gói chứng nhận

Sẽ không sao nếu bạn truy cập localhost/đăng nhập và màn hình đăng nhập xuất hiện.

đi tới localhost/đăng nhập

Cài đặt mạng xã hội

Tiếp theo sẽ giới thiệuLaravel xã hộisử dụng.

Socialite là gói có thể dễ dàng cung cấp thông tin đăng nhập xã hội và Socialite cho webex cũng được hỗ trợ.Vì nó đã xong nên tôi sẽ đưa nó vào tệp soạn nhạc.

Trên thực tế, đây là những điểm có thể được thực hiện với tốc độ chóng mặt. Trước đây mình tự mình thực hiện phần này nên khá rắc rối.

nhà soạn nhạc

Tiếp theo, thêm cài đặt vào config/services.php.

config/services.php

config/services.php

Nếu bạn biết Laravel thì bạn sẽ biết ngay, nhưng nếu chỉ thế này thôi thì sẽ chẳng có ý nghĩa gì. Đặt giá trị thực tế trong .env.

Đặt giá trị thực trong .env

.env

Cuối cùng, định cấu hình cài đặt xung quanh Nhà cung cấp.

Cài đặt xung quanh Nhà cung cấp
app/Nhà cung cấp/EventServiceProvider.php

config/app.php
config/app.php

Triển khai đăng nhập Webex

Lần này, chúng tôi sẽ thêm nút đăng nhập mạng xã hội vào màn hình đăng nhập hiện có và đăng ký người dùng nếu họ chưa đăng ký. Ngược lại, nếu nó đã được đăng ký, hãy cập nhật và đăng nhập.

Đầu tiên, tạo một tuyến đường.

Tuyến đường

chuyển hướnggọi lạiThêm vào. Lần này chỉ có Webex nhưng Socialite cũng sẽ cho phép bạn nhận được các chứng chỉ khác.

CũngTrang chủ được bao bọc trong phần mềm trung gian xác thực để chỉ những người dùng được xác thực mới có thể truy cập nó..

Tiếp theo, sửa lỗi di chuyển.

sửa lỗi di chuyển

cơ sở dữ liệu/di chuyển/2014_10_12_000000_create_users_table.php

cột mật khẩucủacó thể vô hiệuThêm cột access_token. Nullable nghe có vẻ nguy hiểm nếu bạn muốn thêm xác thực mật khẩu trong tương lai. chỉ,Hệ thống này sẽ không hoạt động nếu không có tài khoản webex.Vì vậy, hãy nhanh chóng làm cho nó vô hiệu.

Có nhiều việc phải làm, chẳng hạn như có access_token trong phiên và quản lý Refresh_token đúng cách, nhưng lần này chúng tôi sẽ bỏ qua nó vì nó cực kỳ nhanh.

Tiếp theo sẽ giới thiệuTrình điều khiển đăng nhậpđã có đăng vềthêm phương pháp.

Thêm phương thức vào loginController

Điểm mấu chốt làredirectToPrividercủaphạm vi.

Các phạm vi làVui lòng đặt phạm vi giống như bạn đặt trên trang web Nhà phát triển..

Có một cái bẫy ở đây. Nó không hoạt động với mã này khi tôi sang một bên và sử dụng spark:all.

Lý do là spark:people_read được mã hóa trong gói Socialite.

nhà cung cấp/socialiteproviders/webex/Provider.php

nhà cung cấp/socialiteproviders/webex/Provider.php

Nếu bạn chọn spark:all trên trang Nhà phát triển, thì không thể chọn spark:people_read, vì vậyCài đặt phạm vi trang web của nhà phát triển và cài đặt phạm vi yêu cầu sẽ không còn khớp nữa..

Nếu bạn thực sự muốn sử dụng spark:all, bạn cần sử dụng setScopes để ghi đè phạm vi hiện có.

Tuy nhiênKhông được khuyến khích vì lý do bảo mật.

Bộ điều khiển

Ngoài ra, lần này Bộ điều khiển gọi trực tiếp mô hình Người dùng,Đối với các sản phẩm trên một quy mô nhất định,Tốt hơn là nên bao gồm lớp Dịch vụ hoặc lớp Kho lưu trữ..

Và cuối cùng là thêm nút đăng nhập với Webex.

Nút đăng nhập Webex

Nút đăng nhập được hiển thị trong Webex.
Đăng nhập bằng Cisco wedex_webex

Khi bạn nhấn nút, màn hình đăng nhập Webex sẽ được hiển thị. Nhập địa chỉ email và mật khẩu của bạn vào đây.
cisco_webex_địa chỉ email

Một màn hình xác nhận cho phạm vi đã định cấu hình sẽ xuất hiện, vì vậy hãy phê duyệt nó.
màn hình phê duyệt cisco_webex_approval

Nếu bạn đăng nhập thành công và tên tài khoản Webex của bạn hiển thị ở góc trên bên phải thì đó là thành công.
cisco_webex_ tên tài khoản phía trên bên phải

Tạo không gian (15 phút)

Khi bạn nhận được mã thông báo truy cập, phần còn lại thật dễ dàng.

Tạo lớp chuyên dụng bằng WebexAPI

Sẽ rất lãng phí nếu triển khai từng phần riêng biệt, vì vậy trước tiên chúng tôi sẽ tạo một trình truy cập vào Webex.Máy khách webTôi đã biến nó thành một lớp học. Vì sự khác biệt duy nhất là đích kết nối là DB hay Webex, nên hãy tạo lớp này trong Mô hình.

Máy khách web

ứng dụng/Mô hình/WebClient.php

Tôi không làm bất cứ điều gì phức tạp.

API để lấy danh sách khoảng trắng là tùy chọn.ID nhómkiểuCó các thông số kỹ thuật tùy chọn, chẳng hạn như thông số kỹ thuật của . Tuy nhiên, lần này chúng tôi sẽ có được tất cả mà không cần chỉ định bất cứ điều gì.

Tạo bộ điều khiển

đãTrang chủBộ điều khiển, vì vậy tôi sẽ xử lý nó.

Nếu sau này bạn muốn thêm chức năng tạo và chỉnh sửa không gian, tốt hơn hết bạn nên tạo RoomController chuyên dụng.Tuy nhiên lần này tôi sẽ không làm được vì nó “nhanh quá”.

Sửa đổi phương thức chỉ mục ban đầu ở đó.

Chỉ cần gọi listRooms của WebeClient mà bạn đã tạo trước đó.

Gọi danh sách của WebeClientRooms

sau đóhome.blade.phpcũng sửa.

sửa đổi home.blade.php

Khi bạn nhìn thấy danh sách các khoảng trống trên bảng điều khiển, bạn đã hoàn tất!

Danh sách không gian bảng điều khiển

Tóm lại là

Tôi đã hoàn thành nó chỉ trong 30 phút. Tôi nghĩ tôi có thể làm việc đó nhanh hơn một chút nếu tôi không bị mắc kẹt trong phạm vi.

Lần này, thử thách là xem tôi có thể tạo ra một triển khai tối thiểu nhanh đến mức nào.

Nhưng,Nếu bạn cố gắng thực sự đạt đến cấp độ sản phẩm thì cần phải làm việc chi tiết hơn.là. Tôi thậm chí còn chưa viết bất kỳ mã kiểm tra nào ngay từ đầu.

Chỉ mộtHãy hiểu rằng đây là một dự án đầy thử thách..

Ngoài ra, điều dễ thực hiện làViệc Webex được Socialite hỗ trợ là một yếu tố quan trọng..

Thực ra mình quyết định viết bài này vì từ trước tới giờ mình vẫn tự mình triển khai phần xác thực nhưng khi nghĩ ra một chủ đề thì mình đã tìm hiểu về phần hỗ trợ này cho webex.

https://developer.webex.com/blog/convenient-webex-oauth-for-laravel-projects-with-socialite

Cảm ơn Cisco đã phản hồi.

Nếu bạn đang phát triển API Webex từ bây giờ, vui lòng tham khảo nó.

Remy - thân trên sang một bên
“MieL” được ra mắt với mong muốn hình dung “sự kết nối” giữa khu vực, các công ty và người dân tỉnh Mie. Chúng tôi cung cấp nhiều nội dung hữu ích cho kinh doanh và cuộc sống, chẳng hạn như thông tin về người sành ăn và cửa hàng trong tỉnh, hoạt động của Sun-El và công nghệ kỹ thuật số.
*Được quản lý tại thành phố Matsuzaka, tỉnh Mie Công ty TNHH Sun-El đang làm

-blog công nghệ
-, , ,

viVietnamese

© 2024 MieL