Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP dan OAuth: Melaksanakan penyepaduan log masuk Slack

PHP dan OAuth: Melaksanakan penyepaduan log masuk Slack

王林
王林asal
2023-07-30 23:41:111287semak imbas

Tajuk: PHP dan OAuth: Melaksanakan Integrasi Log Masuk Slack

Dalam pembangunan aplikasi web semasa, banyak aplikasi perlu menyepadukan fungsi log masuk pihak ketiga. Protokol OAuth telah menjadi salah satu kaedah pelaksanaan yang paling biasa digunakan pada masa ini. Artikel ini akan memperkenalkan cara menggunakan PHP dan OAuth untuk melaksanakan penyepaduan log masuk Slack.

1. Persediaan

Sebelum bermula, kita perlu melakukan beberapa persiapan. Pertama, kami memerlukan akaun pembangun Slack, yang boleh didaftarkan di laman web pembangun Slack rasmi. Selepas pendaftaran selesai, kita perlu membuat permohonan baharu. Pada halaman tetapan aplikasi, kami boleh menemui dua bukti kelayakan penting, ID Pelanggan dan Rahsia Pelanggan.

2. Pasang perpustakaan OAuth

Dalam PHP, terdapat banyak perpustakaan OAuth siap sedia tersedia. Di sini kami mengambil "thephpleague/oauth2-client" sebagai contoh untuk dijelaskan. Anda boleh menggunakan Komposer untuk memasang:

composer require league/oauth2-client

3. Tulis kod log masuk OAuth

Di bawah ialah contoh kod PHP mudah yang menunjukkan cara menggunakan perpustakaan OAuth untuk penyepaduan log masuk Slack.

<?php

require_once 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => '<your-client-id>',
    'clientSecret'            => '<your-client-secret>',
    'redirectUri'             => 'http://your-website.com/callback.php',
    'urlAuthorize'            => 'https://slack.com/oauth/v2/authorize',
    'urlAccessToken'          => 'https://slack.com/api/oauth.v2.access',
    'urlResourceOwnerDetails' => '',
]);

// Step 1: Redirect the user to the authorization URL
$authUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();
header('Location: ' . $authUrl);
exit;

Dalam kod di atas, kami mula-mula memperkenalkan perpustakaan OAuth dan mencipta tika GenericProvider. Semasa membuat contoh, kami perlu mengisi maklumat seperti ID Pelanggan dan Rahsia Pelanggan.

Dalam baris 20 kod, kami memanggil kaedah getAuthorizationUrl() untuk mendapatkan URL kebenaran dan mengubah hala pengguna ke URL tersebut. Selepas pengguna log masuk ke URL ini dan bersetuju dengan kebenaran, dia akan diubah hala semula ke URL panggilan balik pratetap kami. getAuthorizationUrl()方法来获取授权URL,并将用户重定向到该URL。用户在该URL中登录并同意授权之后,会被重定向回我们预先设置的回调URL。

四、编写回调代码

用户在授权完成后,Slack会将用户重定向到我们预先设置的回调URL,并带上授权码(code)。我们需要编写回调页面的代码来处理这个授权码,并获取访问令牌(access token)。

<?php

require_once 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => '<your-client-id>',
    'clientSecret'            => '<your-client-secret>',
    'redirectUri'             => 'http://your-website.com/callback.php',
    'urlAuthorize'            => 'https://slack.com/oauth/v2/authorize',
    'urlAccessToken'          => 'https://slack.com/api/oauth.v2.access',
    'urlResourceOwnerDetails' => '',
]);

// Step 2: Get an access token
if (!isset($_GET['code'])) {
    exit('Error: Missing authorization code');
}

$accessToken = $provider->getAccessToken('authorization_code', [
    'code' => $_GET['code']
]);

// Step 3: Use the access token to access the API
$response = $provider->getAuthenticatedRequest(
    'GET',
    'https://slack.com/api/users.identity',
    $accessToken
);

$userInfo = $provider->getParsedResponse($response);

// Here you can handle the user information returned by Slack
var_dump($userInfo);

上述代码中,我们首先引入了OAuth库,并创建了一个GenericProvider实例。和之前一样,我们需要填入Client ID和Client Secret等信息。

在代码中的第14行,我们通过getAccessToken()

4 Tulis kod panggil balik

Selepas kebenaran pengguna selesai, Slack akan mengubah hala pengguna ke URL panggilan balik pratetap kami dengan kod kebenaran (kod). Kami perlu menulis kod untuk halaman panggil balik untuk memproses kod kebenaran ini dan mendapatkan token akses.

rrreee

Dalam kod di atas, kami mula-mula memperkenalkan perpustakaan OAuth dan mencipta tika GenericProvider. Seperti sebelum ini, kami perlu mengisi maklumat seperti ID Pelanggan dan Rahsia Pelanggan.

Dalam baris 14 kod, kami menghantar kod kebenaran (kod) untuk mendapatkan token akses (token akses) melalui kaedah getAccessToken().

Dalam baris 17 kod, kami menggunakan token akses yang diperoleh untuk memanggil API Slack untuk mendapatkan maklumat identiti pengguna. 🎜🎜Akhir sekali, anda boleh melaksanakan logik perniagaan anda sendiri berdasarkan maklumat pengguna. 🎜🎜5. Ringkasan🎜🎜Melalui langkah di atas, kami berjaya melaksanakan penyepaduan log masuk Slack menggunakan PHP dan OAuth. Protokol OAuth menyediakan kami kaedah yang selamat dan boleh dipercayai untuk menyepadukan fungsi log masuk pihak ketiga, menjadikan pengalaman log masuk pengguna lebih mudah. Semoga artikel ini dapat membantu anda. 🎜

Atas ialah kandungan terperinci PHP dan OAuth: Melaksanakan penyepaduan log masuk Slack. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn