WeChat Public Platform baru -baru ini meluncurkan otentikasi WeChat, dan Anda dapat memperoleh izin antarmuka canggih setelah otentikasi. Banyak teman gagal atau tidak dapat memahami konten mereka saat menggunakannya. Hari ini, editor saluran teknologi baru memberi Anda weChat pengembangan halaman web otorisasi untuk mendapatkan informasi pengguna dasar.
1. Apa itu OAuth2.0
Situs web resmi: http://oauth.net/ http://oauth.net/2/
Definisi otoritatif: OAuth adalah protokol terbuka untuk memungkinkan otorisasi yang aman dalam metode sederhana dan standar dari aplikasi web, seluler dan desktop.
OAuth adalah perjanjian terbuka yang memungkinkan pengguna untuk mendapatkan sumber daya pribadi (seperti informasi pribadi pengguna, foto, video, daftar kontak) yang disimpan oleh aplikasi pihak ketiga dengan cara yang aman dan standar (seperti informasi pribadi pengguna, foto, video, daftar kontak) yang disimpan di situs web, aplikasi seluler atau desktop tanpa memberikan aplikasi pengguna dan kata sandi untuk pihak ketiga.
OAuth 2.0 adalah versi berikutnya dari Protokol OAuth, tetapi tidak kompatibel ke belakang dengan OAuth 1.0. OAuth 2.0 berfokus pada kesederhanaan pengembang klien, sambil menyediakan proses sertifikasi khusus untuk aplikasi web, aplikasi desktop dan ponsel, dan perangkat ruang tamu.
OAuth memungkinkan pengguna untuk memberikan token alih -alih nama pengguna dan kata sandi untuk mengakses data yang mereka simpan di penyedia layanan tertentu. Setiap token mengesahkan situs web tertentu (mis., Situs web pengeditan video) untuk mengakses sumber daya tertentu (mis., Hanya video dalam album tertentu) dalam periode waktu tertentu (mis., Dalam 2 jam ke depan). Dengan cara ini, OAuth memungkinkan pengguna untuk mengesahkan situs web pihak ketiga untuk mengakses informasi yang mereka simpan di penyedia layanan lain tanpa berbagi semua izin akses mereka atau data mereka.
Sina Weibo API saat ini juga menggunakan OAuth 2.0.
2. Otorisasi platform publik WeChat OAuth2.0
Langkah -langkah terperinci untuk otorisasi platform publik WeChat OAuth2.0 adalah sebagai berikut:
1. Pengguna mengikuti akun publik WeChat.
2. Akun Publik WeChat menyediakan URL dari halaman Otorisasi Permintaan Pengguna.
3. Pengguna mengklik URL Halaman Otorisasi dan akan memulai permintaan ke server.
4. Server bertanya kepada pengguna apakah dia setuju untuk mengesahkan akun publik WeChat (tidak ada langkah seperti itu ketika ruang lingkup snsapi_base)
5. Pengguna setuju (tidak ada langkah seperti itu saat ruang lingkup snsapi_base)
6. Server meneruskan kode ke akun publik WeChat melalui panggilan balik
7. Dapatkan kode di akun publik WeChat
8. WeChat Public Account Meminta Token Akses ke Server Melalui Kode
9. Server mengembalikan Token Akses dan OpenID ke Akun Publik WeChat
10. WeChat Public Account Meminta Informasi Pengguna ke Server melalui Token Access (Tidak ada langkah seperti itu saat lingkup SNSAPI_BASE)
11. Server mengirimkan informasi pengguna kembali ke akun publik WeChat (tidak ada langkah seperti itu saat lingkup SNSAPI_BASE)
Appid dan AppSecret yang digunakan dapat ditemukan di ID pengembang pusat pengembang.
1. Mengkonfigurasi Nama Domain Halaman Callback Otorisasi
Setelah memasuki latar belakang platform publik WeChat, masukkan tabel pemerintahan pusat pengembang pada gilirannya, temukan otorisasi halaman web untuk mendapatkan informasi pengguna dasar.
Klik Edit di sebelah kanan.
Spesifikasi konfigurasi nama domain untuk callback otorisasi adalah nama domain lengkap dan tidak termasuk http. Misalnya, nama domain yang membutuhkan otorisasi web adalah: www.qq.com. Setelah konfigurasi, halaman di bawah nama domain ini http://www.qq.com/music.html dan http://www.qq.com/login.html semuanya dapat melakukan otentikasi OAuth2.0. Namun, http://pay.qq.com, http://music.qq.com, dan http://qq.com tidak dapat melakukan otentikasi OAuth2.0.
Di sini kami mengisi nama domain sekunder aplikasi Baidu dari Fangbi Studio sebagai mascot.duapp.com
Jika URL Anda tidak masuk daftar hitam, itu akan muncul di atas
Kemudian, konfigurasi nama domain berhasil.
2. Otorisasi Pengguna dan Dapatkan Kode
Di direktori root nama domain, buat file baru, beri nama oAuth2.php, dan isinya
<? phpif (isset ($ _ get ['code'])) {echo $ _get ['code'];} else {echo "no code";}?>Pertama -tama mari kita pahami cara membangun halaman otorisasi:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=redirect_uri&response_type=code&scope=scope&state=state#wechat_redirect
Deskripsi parameter
| parameter | harus | menjelaskan |
|---|---|---|
| appid | Ya | Pengidentifikasi unik dari akun resmi |
| Redirect_uri | Ya | Alamat tautan panggilan balik yang dialihkan setelah otorisasi |
| response_type | Ya | Jenis pengembalian, silakan isi kode |
| cakupan | Ya | Terapkan ruang lingkup otorisasi, snsapi_base (tidak ada halaman otorisasi muncul, hanya lompatan, hanya pengguna openId yang dapat diperoleh), snsapi_userinfo (halaman otorisasi popup, Anda bisa mendapatkan nama panggilan, jenis kelamin, dan lokasi Anda dapat diperoleh. Dan, bahkan jika Anda tidak mengikuti, selama pengguna mengesahkannya, informasi Anda dapat diperoleh) |
| negara | TIDAK | Setelah pengalihan, parameter status akan dimasukkan, dan pengembang dapat mengisi nilai parameter apa pun. |
| #wechat_redirect | TIDAK | Buka tautan langsung di WeChat dan jangan mengisi parameter ini. Parameter ini harus dimasukkan saat melakukan pengalihan halaman 302 |
Lingkup Otorisasi Aplikasi: Karena SNSAPI_BASE hanya dapat memperoleh OpenID, itu tidak masuk akal, jadi kami menggunakan SNSAPI_USERINFO.
Alamat panggilan balik: Isi sebagai alamat file oAuth2.php yang baru saja diunggah,
Parameter Negara: Segala nomor, isi 1 di sini
URL permintaan konstruk adalah sebagai berikut:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx888888888888888&redirect_uri=http: //mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
Kirim tautan ini ke WeChat untuk membuka di browser WeChat. Di sini, gunakan tautan A untuk merangkumnya sebagai berikut:
Selamat datang untuk mengikuti [Jinbao], yang dapat membuatnya lebih nyaman bagi Anda untuk menemukan toko katering, pakaian, department store, dan toko salon kecantikan yang sesuai dengan keinginan Anda di dekat Anda.
<a href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx888888888888888&redirect_uri=http: //mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect">Click di sini untuk mengikat </a>
Dukungan Teknis Fangbi Studio
Tampilkan sebagai berikut di WeChat
Setelah mengklik Binding, antarmuka otorisasi aplikasi muncul
Pilih Izinkan, klik
Lompat ke auth2.php halaman dan jalankan
echo $ _get ['kode']
Kode ditampilkan pada antarmuka. Pada saat ini, tautan diperoleh dengan menyalin tautan di tombol di sudut kanan atas:
http://mascot.duapp.com/oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9f&state=1
Kami berhasil mendapatkan kodenya.
Catatan: Jika antarmuka seperti itu muncul selama pengikatan, itu berarti bahwa parameternya salah dan Anda harus kembali dan memeriksa parameter.
3. Gunakan kode untuk bertukar akses_token
Cara membangun halaman access_token untuk pertukaran otorisasi web:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=code&grant_type=authorization_code
Deskripsi parameter
| parameter | Apakah perlu | menjelaskan |
|---|---|---|
| appid | Ya | Pengidentifikasi unik dari akun resmi |
| Rahasia | Ya | Akun Resmi AppSecret |
| kode | Ya | Isi parameter kode yang diperoleh pada langkah pertama |
| Grant_type | Ya | Isi sebagai otorisasi_code |
Kode: Isi di sini sebagai nilai yang diperoleh pada langkah sebelumnya
URL permintaan konstruk adalah sebagai berikut:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx88888888888888&secret=aaaaaaaaaaaaaaaaaaaaaa AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA & KODE = 00B788E3B42043C8459A57A8D8AB5D9F & Grant_type = otorisasi_code
Anda dapat menjalankan pernyataan ini secara langsung di browser:
(
Inilah kuncinya, yaitu mendapatkan kode data JSON melalui URL di atas
$ ch = curl_init (); curl_setopt ($ ch, curlopt_url, $ url); curl_setopt ($ ch, curlopt_returntransfer, 1); // Memerlukan hasil untuk menjadi string dan output ke layar curl_setopt ($ ch, curlopt_header, 0); // Jangan header http mempercepat efisiensi curl_setopt ($ ch, curlopt_useragent, 'mozilla/5.0 (kompatibel; msie 5.01; windows nt 5.0)'); curl_setopt ($ ch, curlopt_timeout, 15); curl_setopt ($ ch, curlopt_ssl_verifypeer, false); // Permintaan https tidak memverifikasi sertifikat dan host CURL_SETOPT ($ ch, curlopt_ssl_verifyhost, false); $ output = curl_exec ($ ch); curl_close ($ ch); $ jsondecode = json_decode ($ output); // ENCODE STRING dalam format JSON $ array = get_object_vars ($ jsondecode); // Konversi ke Array // Dua Garis Merah adalah poin kunci, untuk HTTPS, saya telah berjuang untuk lebih dari satu hari menggemakan $ array;
)
Dapatkan data JSON berikut:
{"access_token": "OEZXCEIIBSKSXW0EOYLIEASR0GMYD1AWCFFDHGB4FHS_KKF2COTGJ2CBNUKQQVJ-G0ZWEE5-UBJ BZ941EOPQDQY5SSS_GCS2Z40DNVU99Y5AI1BW2UQN-2JXOBLIM5D6L9RIMVM8VG8CBAILPWA8VW ", "Expires_in": 7200, "Refresh_Token": "OEZXCEIIBSKSXW0EOYLIEASR0GMYD1AWCFFDHGB4FHS_KKF2COTGJ2CBNUKQQVJ-G0ZWEE5-UBJ BZ941EOPQDQY5SSS_GCS2Z40DNVU99Y5CZPAWZKIUZ_6X_TFKLOXLU7KDKM2232WDXB3MSUZQ1A ", "OpenId": "OLVPPJQS9BHVZWPJ5A-VTYAX3GLC", "SCOPE": "SNSAPI_USERINFO,"}Format data ditafsirkan sebagai berikut:
| parameter | menggambarkan |
|---|---|
| access_token | Kredensial Panggilan Antarmuka Otorisasi Web, Catatan: Access_Token ini berbeda dari akses_token yang didukung oleh dasar |
| kedaluwarsa_in | Access_Token Antarmuka panggilan kredensial, unit (detik) |
| Refresh_token | Pengguna Refresh Access_Token |
| OpenID | Pengidentifikasi unik pengguna. Harap dicatat bahwa ketika pengguna tidak mengikuti akun resmi, ketika pengguna mengunjungi halaman web akun resmi, mereka juga akan menghasilkan OpenID unik untuk pengguna dan akun resmi. |
| cakupan | Ruang lingkup otorisasi pengguna, dipisahkan oleh koma (,) |
Jadi, kami berhasil bertukar akses_token dan refresh_token melalui kode.
Refresh Access_Token
Dokumen resmi menyebutkan fungsi Access_Token yang menyegarkan, tetapi ini bukan keharusan. Anda dapat mengabaikannya untuk pertama kalinya menggunakannya.
Metode permintaan URL adalah sebagai berikut:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=refresh_token
Deskripsi parameter
| parameter | Apakah perlu | menjelaskan |
|---|---|---|
| appid | Ya | Pengidentifikasi unik dari akun resmi |
| Grant_type | Ya | Isi sebagai refresh_token |
| Refresh_token | Ya | Isi parameter refresh_token yang diperoleh melalui access_token |
Strukturnya adalah sebagai berikut:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=wx88888888888888&grant_type=refresh_token&refresh_token=oezxCeiibsksxw0eoy lieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvj-g0zwee5-ubjbz941eopq DQY5SS_GCS2Z40DNVU99Y5CZPAWZKIUZ_6X_TFKLOXLU7KDKM2232WDXB3MSUZQ1A
Jalankan data JSON dalam format yang sama di browser
4. Gunakan Access_Token untuk mendapatkan informasi pengguna
Metode permintaan:
https://api.weixin.qq.com/sns/userinfo?access_token=access_token&openid=openid
Deskripsi parameter
| parameter | menggambarkan |
|---|---|
| access_token | Kredensial Panggilan Antarmuka Otorisasi Web, Catatan: Access_Token ini berbeda dari akses_token yang didukung oleh dasar |
| OpenID | ID unik pengguna |
URL dibangun sebagai berikut:
https://api.weixin.qq.com/sns/userinfo?access_token=oezxceeiibsksxw0eoylieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvjgb4fhs_kkf2cotgj2cbnukqqvj-g0z WEE5-UBJBZ941EOPQDQY5SS_GCS2Z40DNVU99Y5AI1BW2UQN-2JXOBLIM5D6L9RIMVM8VG8CBAILPWA8VW & OpenID = OLVPPJQS9BHVZWPJ5A-VTYX
Anda dapat menjalankan pernyataan ini secara langsung di browser:
Dapatkan data JSON berikut:
{"openId": "olvppjqs9bhvzwpj5a-vtyax3glc", "julukan": "fangbi", "sex": 1, "bahasa": "zh_cn", "city": "shenzhen", "province": "guangdong", "country": "shenzhen", "province": "guangdong", "country" ":" cn "," province ":" guangdong "," country "": "cn", "province": "guangdong", "country" "" cn "," " "http://wx.qlogo.cn/mmopen/utpkyf69vaBcrdrlbuspsdqn38doibcru6samcsnx558etalvm8pym6jlegzorh67hyzibizpxu4bk1xnwzsxb3cb3cb1888." "Interpretasi Parameter:
| parameter | menggambarkan |
|---|---|
| OpenID | ID unik pengguna |
| nama panggilan | Nama panggilan pengguna |
| seks | Jenis kelamin pengguna, ketika nilainya 1, laki -laki, ketika nilainya 2, itu adalah perempuan, dan ketika nilainya 0, tidak diketahui |
| propinsi | Provinsi mengisi profil pengguna |
| kota | Kota diisi dengan informasi pribadi pengguna biasa |
| negara | Negara, seperti Cina adalah CN |
| headimgurl | Avatar pengguna, nilai terakhir mewakili ukuran avatar kuadrat (ada 0, 46, 64, 96, dan 132 nilai opsional, dan 0 mewakili 640*640 persegi avatar). Item ini kosong ketika pengguna tidak memiliki avatar. |
| hak istimewa | Informasi Privilege Pengguna, Array JSON, seperti pengguna WeChat Woka (Chinaunicom) |
Ini konsisten dengan informasi wechat pribadi saya
Pada titik ini, tanpa memasukkan akun dan kata sandi saya, akun publik WeChat Jinbao memperoleh informasi pribadi saya, termasuk nama panggilan saya, jenis kelamin, negara, provinsi, kota, avatar pribadi dan daftar hak istimewa.
Sertifikasi OAuth2 lengkap selesai.
3. Demonstrasi terperinci
Ikuti Fangbei Studio (lihat kode QR di bawah), balas "Otorisasi", kembali ke pesan grafik dan teks, klik pada gambar
Di halaman konfirmasi, klik "Izinkan"
Hasil yang diperoleh muncul (gambar tunduk pada pemrosesan anti-pencurian, sehingga tidak dapat ditampilkan secara langsung, Anda dapat mengunduhnya secara lokal dan menampilkannya)
Di atas adalah tentang informasi tentang pengembangan web otorisasi WeChat untuk mendapatkan informasi dasar pengguna, otorisasi web untuk mendapatkan informasi pengguna, dan informasi yang relevan akan ditambahkan di masa depan. Terima kasih atas dukungan Anda dari saluran teknologi baru!