WeChat Public Platform เพิ่งเปิดตัว WeChat Authentication และคุณสามารถได้รับสิทธิ์อินเตอร์เฟสขั้นสูงหลังจากการรับรองความถูกต้อง เพื่อนหลายคนล้มเหลวหรือไม่เข้าใจเนื้อหาเมื่อใช้งาน วันนี้บรรณาธิการของช่องเทคโนโลยีใหม่ให้การอนุญาตเว็บเพจการพัฒนา WeChat เพื่อรับข้อมูลผู้ใช้ขั้นพื้นฐาน
1. OAuth2.0 คืออะไร
เว็บไซต์อย่างเป็นทางการ: http://oauth.net/ http://oauth.net/2/
คำจำกัดความที่เชื่อถือได้: OAUTH เป็นโปรโตคอลแบบเปิดเพื่ออนุญาตให้มีการอนุญาตที่ปลอดภัยในวิธีการง่าย ๆ และมาตรฐานจากเว็บแอปพลิเคชันมือถือและเดสก์ท็อป
Oauth เป็นข้อตกลงแบบเปิดที่อนุญาตให้ผู้ใช้ได้รับทรัพยากรส่วนตัว (เช่นข้อมูลส่วนบุคคลของผู้ใช้, ภาพถ่าย, วิดีโอ, รายการติดต่อ) ที่จัดเก็บโดยแอปพลิเคชันบุคคลที่สามในวิธีที่ปลอดภัยและเป็นมาตรฐาน (เช่นข้อมูลส่วนบุคคลของผู้ใช้ภาพถ่ายวิดีโอรายการติดต่อ) ที่เก็บไว้ในเว็บไซต์มือถือหรือแอปพลิเคชันเดสก์ท็อป
OAUTH 2.0 เป็นโปรโตคอล OAUTH รุ่นต่อไป แต่ไม่สามารถใช้งานได้กับ OAUTH 1.0 OAuth 2.0 มุ่งเน้นไปที่ความเรียบง่ายของนักพัฒนาลูกค้าในขณะที่ให้กระบวนการรับรองเฉพาะสำหรับเว็บแอปพลิเคชันแอปพลิเคชันเดสก์ท็อปและโทรศัพท์มือถือและอุปกรณ์ห้องนั่งเล่น
Oauth อนุญาตให้ผู้ใช้ให้โทเค็นแทนชื่อผู้ใช้และรหัสผ่านเพื่อเข้าถึงข้อมูลที่เก็บไว้ในผู้ให้บริการเฉพาะ โทเค็นแต่ละรายการอนุญาตเว็บไซต์เฉพาะ (เช่นเว็บไซต์แก้ไขวิดีโอ) เพื่อเข้าถึงทรัพยากรเฉพาะ (เช่นเพียงวิดีโอในอัลบั้มบางอัลบั้ม) ภายในระยะเวลาที่กำหนด (เช่นภายใน 2 ชั่วโมงข้างหน้า) ด้วยวิธีนี้ OAuth อนุญาตให้ผู้ใช้อนุญาตเว็บไซต์บุคคลที่สามเพื่อเข้าถึงข้อมูลที่เก็บไว้ในผู้ให้บริการรายอื่นโดยไม่ต้องแบ่งปันสิทธิ์การเข้าถึงทั้งหมดหรือข้อมูลของพวกเขา
ปัจจุบัน Sina Weibo API ยังใช้ OAuth 2.0
2. การอนุญาตของแพลตฟอร์มสาธารณะ WeChat OAuth2.0
ขั้นตอนโดยละเอียดสำหรับการอนุญาตของแพลตฟอร์มสาธารณะ WeChat OAuth2.0 มีดังนี้:
1. ผู้ใช้ติดตามบัญชีสาธารณะ WeChat
2. บัญชีสาธารณะ WeChat ให้ URL ของหน้าการอนุญาตคำขอผู้ใช้
3. ผู้ใช้คลิกที่ URL หน้าการอนุญาตและจะเริ่มการร้องขอไปยังเซิร์ฟเวอร์
4. เซิร์ฟเวอร์ถามผู้ใช้ว่าเขาตกลงที่จะอนุญาตบัญชีสาธารณะ WeChat หรือไม่ (ไม่มีขั้นตอนดังกล่าวเมื่อขอบเขตคือ SNSAPI_BASE)
5. ผู้ใช้เห็นด้วย (ไม่มีขั้นตอนดังกล่าวเมื่อขอบเขตคือ SNSAPI_BASE)
6. เซิร์ฟเวอร์ส่งรหัสไปยังบัญชีสาธารณะ WeChat ผ่านการโทรกลับ
7. รับรหัสในบัญชีสาธารณะ WeChat
8. บัญชีสาธารณะ WeChat ขอให้เข้าถึงโทเค็นไปยังเซิร์ฟเวอร์ผ่านรหัส
9. เซิร์ฟเวอร์ส่งคืนโทเค็นการเข้าถึงและ OpenID ไปยังบัญชีสาธารณะ WeChat
10. บัญชีสาธารณะ WeChat ขอข้อมูลผู้ใช้ไปยังเซิร์ฟเวอร์ผ่านโทเค็นการเข้าถึง (ไม่มีขั้นตอนดังกล่าวเมื่อขอบเขตคือ SNSAPI_BASE)
11. เซิร์ฟเวอร์ส่งข้อมูลผู้ใช้กลับไปยังบัญชีสาธารณะ WeChat (ไม่มีขั้นตอนดังกล่าวเมื่อขอบเขตคือ SNSAPI_BASE)
AppID และ AppSecret ที่ใช้สามารถพบได้ใน ID ผู้พัฒนาศูนย์นักพัฒนา
1. กำหนดค่าชื่อโดเมนของหน้าโทรกลับการอนุญาต
หลังจากเข้าสู่พื้นหลังแพลตฟอร์มสาธารณะ WeChat ให้ป้อนตารางการรับสมัครศูนย์นักพัฒนาในทางกลับกันค้นหาการอนุญาตเว็บเพจเพื่อรับข้อมูลผู้ใช้ขั้นพื้นฐาน
คลิกแก้ไขทางด้านขวา
ข้อมูลจำเพาะการกำหนดค่าชื่อโดเมนสำหรับการเรียกกลับการอนุญาตเป็นชื่อโดเมนเต็มรูปแบบและไม่รวม HTTP ตัวอย่างเช่นชื่อโดเมนที่ต้องมีการอนุญาตเว็บคือ: www.qq.com หลังการกำหนดค่าหน้าด้านล่างชื่อโดเมนนี้ http://www.qq.com/music.html และ http://www.qq.com/login.html สามารถทำการตรวจสอบ OAuth2.0 ทั้งหมดได้ อย่างไรก็ตาม http://pay.qq.com, http://music.qq.com และ http://qq.com ไม่สามารถดำเนินการตรวจสอบความถูกต้อง OAuth2.0
ที่นี่เรากรอกชื่อโดเมนรองแอปพลิเคชัน Baidu จาก Fangbi Studio เป็น mascot.duapp.com
หาก URL ของคุณไม่ขึ้นบัญชีดำมันจะปรากฏที่ด้านบน
จากนั้นการกำหนดค่าชื่อโดเมนจะสำเร็จ
2. การอนุญาตของผู้ใช้และรับรหัส
ในไดเรกทอรีรูทของชื่อโดเมนสร้างไฟล์ใหม่ชื่อมัน oauth2.php และเนื้อหาคือ
<? phpif (isset ($ _ get ['code'])) {echo $ _get ['code'];} อื่น {echo "ไม่มีรหัส";}?>?>ก่อนอื่นให้เข้าใจวิธีสร้างหน้าการอนุญาต:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=retirect_uri&response_type=code&scope=scope&state=state#wechat_redirect
คำอธิบายพารามิเตอร์
| พารามิเตอร์ | ต้อง | อธิบาย |
|---|---|---|
| ทำให้ดีขึ้น | ใช่ | ตัวระบุที่ไม่ซ้ำกันของบัญชีอย่างเป็นทางการ |
| เปลี่ยนเส้นทาง _uri | ใช่ | เปลี่ยนเส้นทางที่อยู่ลิงค์การโทรกลับหลังจากได้รับอนุญาต |
| Response_type | ใช่ | ประเภทส่งคืนกรุณากรอกรหัส |
| ขอบเขต | ใช่ | ใช้ขอบเขตการอนุญาต, SNSAPI_BASE (ไม่มีหน้าการอนุญาตปรากฏขึ้นเพียงแค่กระโดดเพียงผู้ใช้ OpenID เท่านั้นที่สามารถรับได้), SNSAPI_USERINFO (หน้าการอนุญาตป๊อปอัพคุณสามารถรับชื่อเล่นเพศและสถานที่ผ่าน OpenID และแม้ว่าคุณจะไม่ได้ติดตาม |
| สถานะ | เลขที่ | หลังจากการเปลี่ยนเส้นทางจะมีการรวมพารามิเตอร์สถานะและนักพัฒนาสามารถกรอกค่าพารามิเตอร์ใด ๆ |
| #wechat_redirect | เลขที่ | เปิดลิงก์โดยตรงบน WeChat และอย่ากรอกพารามิเตอร์นี้ พารามิเตอร์นี้จะต้องรวมเมื่อทำการเปลี่ยนเส้นทางหน้า 302 |
ขอบเขตการอนุญาตแอปพลิเคชัน: เนื่องจาก SNSAPI_BASE สามารถรับ OpenID ได้เท่านั้นจึงไม่สมเหตุสมผลดังนั้นเราจึงใช้ SNSAPI_USERINFO
ที่อยู่การโทรกลับ: กรอกเป็นที่อยู่ไฟล์ของ OAuth2.php ที่เพิ่งอัปโหลด
พารามิเตอร์สถานะ: หมายเลขใดก็ได้กรอกใน 1 ที่นี่
URL คำขอโครงสร้างมีดังนี้:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888&redirect_uri=http: //mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
ส่งลิงค์นี้ไปยัง WeChat เพื่อเปิดในเบราว์เซอร์ WeChat ที่นี่ใช้ลิงก์ A เพื่อห่อหุ้มไว้ดังนี้:
ยินดีต้อนรับสู่การติดตาม [Jinbao] ซึ่งสามารถทำให้สะดวกยิ่งขึ้นสำหรับคุณในการหาร้านอาหารเสื้อผ้าห้างสรรพสินค้าและร้านเสริมสวยร้านเสริมสวยที่เหมาะกับความปรารถนาของคุณใกล้ตัวคุณ
<A href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888&redirect_uri=http: //mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect"> Click ที่นี่เพื่อผูก </a>
การสนับสนุนด้านเทคนิคสตูดิโอ Fangbi
แสดงดังนี้ใน WeChat
หลังจากคลิกที่การเชื่อมโยงอินเทอร์เฟซการอนุญาตแอปพลิเคชันจะปรากฏขึ้น
เลือกอนุญาตคลิก
ข้ามไปที่หน้า auth2.php และดำเนินการ
echo $ _get ['code']
รหัสจะแสดงบนอินเทอร์เฟซ ในเวลานี้ลิงค์ได้มาจากการคัดลอกลิงก์ในปุ่มที่มุมขวาบน:
http://mascot.duapp.com/oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9f&state=1
เราได้รับรหัสสำเร็จ
หมายเหตุ: หากอินเทอร์เฟซดังกล่าวปรากฏขึ้นระหว่างการเชื่อมโยงนั่นหมายความว่าพารามิเตอร์ไม่ถูกต้องและคุณต้องย้อนกลับไปและตรวจสอบพารามิเตอร์
3. ใช้รหัสเพื่อแลกเปลี่ยน access_token
วิธีการสร้างหน้า access_token สำหรับการแลกเปลี่ยนสำหรับการอนุญาตเว็บ:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=code&grant_type=authorization_code
คำอธิบายพารามิเตอร์
| พารามิเตอร์ | จำเป็นหรือไม่ | อธิบาย |
|---|---|---|
| ทำให้ดีขึ้น | ใช่ | ตัวระบุที่ไม่ซ้ำกันของบัญชีอย่างเป็นทางการ |
| ความลับ | ใช่ | แอปบัญชีอย่างเป็นทางการ |
| รหัส | ใช่ | กรอกพารามิเตอร์รหัสที่ได้รับในขั้นตอนแรก |
| grant_type | ใช่ | กรอกเป็น Authorization_Code |
รหัส: กรอกที่นี่เป็นค่าที่ได้รับในขั้นตอนก่อนหน้า
URL คำขอโครงสร้างมีดังนี้:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx8888888888888&secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
คุณสามารถเรียกใช้คำสั่งนี้ได้โดยตรงในเบราว์เซอร์:
-
นี่คือกุญแจสำคัญซึ่งคือการรับรหัสข้อมูล JSON ผ่าน URL ด้านบน
$ CH = CURL_INIT (); curl_setopt ($ ch, curlopt_url, $ url); curl_setopt ($ ch, curlopt_returntransfer, 1); // ต้องการผลลัพธ์ที่จะเป็นสตริงและเอาต์พุตไปยังหน้าจอ curl_setopt ($ ch, curlopt_header, 0); // อย่า HTTP ส่วนหัวเพิ่มประสิทธิภาพการเพิ่มประสิทธิภาพ curl_setopt ($ ch, curlopt_useragent, 'mozilla/5.0 (เข้ากันได้; msie 5.01; windows nt 5.0)'); curl_setopt ($ ch, curlopt_timeout, 15); curl_setopt ($ ch, curlopt_ssl_verifypeer, false); // คำขอ https ไม่ได้ตรวจสอบใบรับรองและโฮสต์ curl_setopt ($ ch, curlopt_ssl_verifyhost, false); $ output = curl_exec ($ ch); curl_close ($ ch); $ jSondecode = json_decode ($ output); // เข้ารหัสสตริงในรูปแบบ JSON $ array = get_object_vars ($ jSondecode); // แปลงเป็นอาร์เรย์ // เส้นสีแดงทั้งสองเป็นจุดสำคัญสำหรับ https ฉันได้ดิ้นรนมากกว่าหนึ่งวัน echo $ array;
-
รับข้อมูล JSON ต่อไปนี้:
{"access_token": "oezxceiibsksxw0eoylieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvqvj-g0zwee5-ubj BZ941EOPQDQY5SS_GCS2Z40DNVU99Y5AI1BW2UQN-2JXOBLIM5D6L9RIMVM8VG8CBAILPWA8VW " "Expires_in": 7200, "Refresh_token" "oezxceiibsksxw0eoylieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvqvj-g0zwee5-ubj BZ941EOPQDQY5SS_GCS2Z40DNVU99Y5CZPAWZKSIUZ_6X_TFKLOXLU7KDKM2232WDXB3MSUZQ1A " "openId": "olvppjqs9bhvzwpj5a-vtyax3glc", "ขอบเขต": "snsapi_userinfo,"}รูปแบบข้อมูลถูกตีความดังนี้:
| พารามิเตอร์ | อธิบาย |
|---|---|
| access_token | ข้อมูลรับรองการเรียกใช้ข้อมูลการเรียกใช้เว็บ |
| Expires_in | Access_Token Interface Call Timeout Credentialing, UNIT (วินาที) |
| refresh_token | ผู้ใช้รีเฟรช access_token |
| แบบเปิดกว้าง | ตัวระบุที่ไม่ซ้ำกันของผู้ใช้ โปรดทราบว่าเมื่อผู้ใช้ไม่ปฏิบัติตามบัญชีอย่างเป็นทางการเมื่อผู้ใช้เยี่ยมชมหน้าเว็บของบัญชีอย่างเป็นทางการพวกเขาจะสร้าง OpenID ที่ไม่ซ้ำกันสำหรับผู้ใช้และบัญชีอย่างเป็นทางการ |
| ขอบเขต | ขอบเขตของการอนุญาตผู้ใช้คั่นด้วยเครื่องหมายจุลภาค (,) |
ดังนั้นเราจึงแลกเปลี่ยน access_token และ Refresh_token ผ่านรหัสได้สำเร็จ
รีเฟรช access_token
เอกสารอย่างเป็นทางการกล่าวถึงฟังก์ชั่นของการรีเฟรช access_token แต่นี่ไม่ใช่สิ่งที่ต้องทำ คุณสามารถเพิกเฉยได้เป็นครั้งแรกที่ใช้มัน
วิธีการขอ URL มีดังนี้:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=refresh_token
คำอธิบายพารามิเตอร์
| พารามิเตอร์ | จำเป็นหรือไม่ | อธิบาย |
|---|---|---|
| ทำให้ดีขึ้น | ใช่ | ตัวระบุที่ไม่ซ้ำกันของบัญชีอย่างเป็นทางการ |
| grant_type | ใช่ | เติมเป็น refresh_token |
| refresh_token | ใช่ | กรอกพารามิเตอร์ refresh_token ที่ได้รับผ่าน access_token |
โครงสร้างมีดังนี้:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=wx88888888888888&grant_type=refresh_token&refresh_token=oezxceiibsksxw0eoy lieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqvj-g0zwee5-ubjbz941eopq DQY5SS_GCS2Z40DNVU99Y5CZPAWZKSIUZ_6X_TFKLOXLU7KDKM2232WDXB3MSUZQ1A
เรียกใช้ข้อมูล JSON ในรูปแบบเดียวกันในเบราว์เซอร์
4. ใช้ access_token เพื่อรับข้อมูลผู้ใช้
วิธีการขอ:
https://api.weixin.qq.com/sns/userinfo?access_token=access_token&openid=openid
คำอธิบายพารามิเตอร์
| พารามิเตอร์ | อธิบาย |
|---|---|
| access_token | ข้อมูลรับรองการเรียกใช้ข้อมูลการเรียกใช้เว็บ |
| แบบเปิดกว้าง | ID ที่ไม่ซ้ำกันของผู้ใช้ |
URL ถูกสร้างขึ้นดังนี้:
https://api.weixin.qq.com/sns/userinfo?access_token=oezxceiibsksxw0eoylieasr0gmyd1awcffdhgb4fhs_kkf2cotgj2cbnukqqj-g0zj-g0z Wee5-UBJBZ941EOPQDQY5SS_GCS2Z40DNVU99Y5AI1BW2UQN-2JXOBLIM5D6L9RIMVM8VGG8CBAILPWA8VW & OlVPPJQS9BHVZWPJ5A-VTY-VTYAX3
คุณสามารถเรียกใช้คำสั่งนี้ได้โดยตรงในเบราว์เซอร์:
รับข้อมูล JSON ต่อไปนี้:
{"OpenId": "olvppjqs9bhvzwpj5a-vtyax3glc", "ชื่อเล่น": "Fangbi", "Sex": 1, "Language": "Zh_cn", "City": "Shenzhen", "Province": "Guangdong" "http://wx.qlogo.cn/mmopen/utpkyf69vabcrdrlbuspsdqn38doibckru6samcsnx558etalvm8pym6jlegzorh67hyzibizpxu4bk1xnwzsxb3cs4Q3การตีความพารามิเตอร์:
| พารามิเตอร์ | อธิบาย |
|---|---|
| แบบเปิดกว้าง | ID ที่ไม่ซ้ำกันของผู้ใช้ |
| ชื่อเล่น | ชื่อเล่นของผู้ใช้ |
| เพศ | เพศของผู้ใช้เมื่อค่าคือ 1 มันเป็นเพศชายเมื่อค่าคือ 2 มันเป็นเพศหญิงและเมื่อค่าเป็น 0 จะไม่ทราบ |
| จังหวัด | จังหวัดที่กรอกในโปรไฟล์ผู้ใช้ |
| เมือง | เมืองที่เต็มไปด้วยข้อมูลส่วนบุคคลของผู้ใช้ทั่วไป |
| ประเทศ | ประเทศเช่นจีนคือ CN |
| headimgurl | อวตารของผู้ใช้ค่าสุดท้ายแสดงถึงขนาดของรูปสี่เหลี่ยมจัตุรัส (มี 0, 46, 64, 96 และ 132 ค่าเป็นทางเลือกและ 0 หมายถึง 640*640 ตารางเว้าแอร์) รายการนี้ว่างเปล่าเมื่อผู้ใช้ไม่มีอวตาร |
| สิทธิพิเศษ | ข้อมูลสิทธิพิเศษของผู้ใช้อาร์เรย์ JSON เช่นผู้ใช้ WeChat Woka (Chinaunicom) |
สิ่งนี้สอดคล้องกับข้อมูล WeChat ส่วนตัวของฉัน
ณ จุดนี้โดยไม่ต้องป้อนบัญชีและรหัสผ่านของฉันบัญชีสาธารณะ WeChat Jinbao ได้รับข้อมูลส่วนบุคคลของฉันรวมถึงชื่อเล่นของฉันเพศประเทศจังหวัดเมืองอวตารส่วนตัวและรายการสิทธิพิเศษ
การรับรอง OAuth2 ที่สมบูรณ์เสร็จสมบูรณ์
3. การสาธิตโดยละเอียด
ติดตาม Fangbei Studio (ดูรหัส QR ด้านล่าง) ตอบกลับ "การอนุญาต" กลับไปที่กราฟิกและข้อความคลิกที่รูปภาพ
ในหน้าการยืนยันคลิก "อนุญาต"
ผลลัพธ์ที่ได้รับจะปรากฏขึ้น (รูปภาพขึ้นอยู่กับการประมวลผลต่อต้านการโจรกรรมดังนั้นจึงไม่สามารถแสดงได้โดยตรงคุณสามารถดาวน์โหลดได้ในเครื่องและแสดง)
ข้างต้นเป็นข้อมูลเกี่ยวกับการพัฒนาเว็บของการอนุญาต WeChat เพื่อรับข้อมูลพื้นฐานของผู้ใช้การอนุญาตเว็บเพื่อรับข้อมูลผู้ใช้และข้อมูลที่เกี่ยวข้องจะถูกเพิ่มในอนาคต ขอบคุณสำหรับการสนับสนุนจากช่องเทคโนโลยีใหม่!