ปลั๊กอิน Flutter เพื่อเข้าสู่ระบบผ่าน VK.com
เพิ่มคุณสมบัติการเข้าสู่ระบบ VK ในแอปพลิเคชันของคุณได้อย่างง่ายดาย ข้อมูลโปรไฟล์ผู้ใช้รวมอยู่ด้วย
VK SDK เวอร์ชันใช้ในปลั๊กอิน:
iOS: ^1.6 (Cocoapods)
Android: 3.5.0 (Maven Core, API)
iOS 9.0 ขึ้นไป
Android 5.0 และใหม่กว่า (SDK 21 ) compileSdkVersion
ขั้นต่ำ 31
เพื่อใช้ปลั๊กอินนี้:
เพิ่ม flutter_login_vk
เป็นการพึ่งพาในไฟล์ pubspec.yaml ของคุณ
สร้างแอพบน vk.com
การตั้งค่า Android;
ตั้งค่า iOS;
การตั้งค่าแอป VK.com เพิ่มเติม
ใช้ปลั๊กอินในแอปพลิเคชัน
ดูเอกสารประกอบบน VK.com สำหรับข้อมูลเต็ม:
iOS SDK
Android SDK
และนี่คือคำแนะนำในภาษารัสเซียหากเป็นภาษาแม่ของคุณ
สร้างแอพบน vk.com https://vk.com/editapp?act=create
ป้อน "ชื่อ"
เลือก แอพแบบสแตนด์อโลน เป็น "แพลตฟอร์ม"
คลิก "เชื่อมต่อแอป"
แอปพลิเคชันจะถูกสร้างขึ้น ตอนนี้เลือกแท็บ "การตั้งค่า" และคัดลอก "แอพรหัส" (อ้างอิงเป็น [APP_ID]
ใน readme นี้)
ตั้ง Package name for Android
- ชื่อแพ็คเกจของคุณสำหรับแอปพลิเคชัน Android ( package
แอตทริบิวต์ใน AndroidManifest.xml
)
ตั้ง Main activity for Android
- คลาสกิจกรรมหลักของคุณ (พร้อมแพ็คเกจ) โดยค่าเริ่มต้นมันจะเป็น com.yourcompany.yourapp.MainActivity
ในการเติม Signing certificate fingerprint for Android
คุณควรสร้างลายนิ้วมือ SHA1 ตามที่อธิบายไว้ในเอกสารประกอบ (โดยไม่มีคำนำหน้า SHA1:
คำนำหน้า) ให้ความสนใจ : คุณควรลบโคลอนทั้งหมดออกจากสตริงลายนิ้วมือ เพิ่มลายนิ้วมือสำหรับการดีบักและใบรับรองการเปิดตัว หมายเหตุ: หากแอปพลิเคชันของคุณใช้การลงนามแอป Google Play มากกว่าที่คุณควรได้รับใบรับรองลายนิ้วมือ SHA-1 จาก Google Play Console
คลิก "บันทึก"
เพิ่มตัวระบุบันเดิลของคุณ - ตั้ง App Bundle ID for iOS
(คุณสามารถค้นหาได้ใน XCode: Runner - Target Runner - ทั่วไป, Identity
Section, Field Bundle Identifier
)
นอกจากนี้ยังตั้ง App ID for iOS
คุณเป็น SKU
(คุณสามารถค้นหาได้ใน App Store Connect: แอพของฉัน - {แอปพลิเคชันของคุณ} - แอพสโตร์ - ข้อมูลแอพ, ส่วน "ข้อมูลทั่วไป") ส่วนใหญ่มักจะไม่เหมือนกับ Bundle ID
คลิก "บันทึก"
แก้ไข AndroidManifest.xml
( android/app/src/main/AndroidManifest.xml
):
เพิ่มการอนุญาต INTERNET
ในรูทของ <manifest>
หากคุณยังไม่มี (อาจมี):
<Use-Permission Android: name = "Android.permission.internet" />>>
เพิ่มกิจกรรมใน application
ส่วน:
<กิจกรรม Android: name = "com.vk.sdk.vkserviceActivity" Android: label = "ServiceActivity" Android: Theme = "@style /vk.transparent" />
เพิ่มตัวระบุแอปพลิเคชัน VK ของคุณลงในไฟล์ทรัพยากร (เช่น strings.xml
), แทนที่ [APP_ID]
ด้วยรหัสแอปพลิเคชันของคุณ:
<resources> <integer name = "com_vk_sdk_appid"> [app_id] </teger> </srovesource>
เพิ่มกฎ -keep class com.vk.** { *; }
ในไฟล์ proguard ของคุณ ( android/app/proguard-rules.pro
)
ดูตัวอย่าง AndroidManifest.xml
เต็มรูปแบบ
กำหนดค่า Info.plist
( ios/Runner/Info.plist
) คุณสามารถแก้ไขเป็นไฟล์ข้อความจาก IDE ของคุณหรือคุณสามารถเปิดโครงการ ( ios/Runner.xcworkspace
) ใน XCode
ใน XCode คลิกขวาที่ Info.plist
และเลือก Open As Source Code
คัดลอกและวางตัวอย่าง XML ต่อไปนี้ลงในร่างกายของไฟล์ของคุณ ( <dict>...</dict>
) แทนที่ [APP_ID]
ด้วยรหัสแอปพลิเคชันของคุณ:
<sey> cfbundleUrlTypes </key> <อาเรย์> <pont> <sey> cfbundleUrlschemes </key> <อาเรย์> <string> vk [app_id] </string> </erray> </itc </erray>
นอกจากนี้ยังเพิ่มลงใน Info.plist
( <dict>...</dict>
):
<sey> lsapplicationqueriesschemes </key> <อาเรย์> <String> vk </string> <String> VK-Share </string> <String> vkauthorize </string> </erray>
ป้อนตัวระบุแอปพลิเคชัน VK ของคุณ
<sey> vkappid </key> <String> [APP_ID] </string>
ดู Info.plist
เต็มรูปแบบในตัวอย่าง
CFBundleURLTypes
หรือ LSApplicationQueriesSchemes
อยู่ใน Info.plist
ของคุณ หากคุณมีคุณควรรวมค่าของพวกเขาแทนที่จะเพิ่มคีย์ซ้ำ
หากคุณต้องการใช้ scope=nohttps
ซึ่งเรา ไม่แนะนำ อย่างยิ่งคุณควรเพิ่ม NSAppTransportSecurity
โปรดดูเอกสารประกอบ
ไปที่แอพของฉันและคลิก "จัดการ" บนแอปของคุณ
บนแท็บ "ข้อมูล" คุณควร:
ป้อน "คำอธิบาย"
เลือก "หมวดหมู่" ที่เหมาะสม
อัปโหลดไอคอนขนาดเล็ก "32x32 ไอคอน"
คลิก "บันทึก"
อัปโหลด "Square Banner" และ "A Square Banner สำหรับแคตตาล็อก" - ผู้ใช้สามารถดูได้
ตั้งค่าการตั้งค่าอื่น ๆ หากคุณต้องการ
กว่าไปที่แท็บ "การตั้งค่า" และเปิดแอปพลิเคชัน: เปลี่ยน "สถานะแอพ" จาก Application off
ไปยัง Application on and visible to all
คลิก "บันทึก"
ก่อนอื่นคุณควรสร้างอินสแตนซ์ของ VKLogin
กว่าก่อนที่วิธีการใด ๆ จะโทรหรือตรวจสอบ accessToken
คุณควรเริ่มต้น VK SDK:
vk สุดท้าย = vklogin (); รอ vk.initsdk ();
ตอนนี้คุณสามารถใช้ปลั๊กอิน
คุณสมบัติ:
เข้าสู่ระบบผ่าน vk.com;
รับโทเค็น
รับโปรไฟล์ผู้ใช้
รับอีเมลผู้ใช้
ตรวจสอบว่าเข้าสู่ระบบหรือไม่
ออกจากระบบ
รหัสตัวอย่าง:
นำเข้า 'แพ็คเกจ: flutter_login_vk/flutter_login_vk.dart'; // สร้างอินสแตนซ์ของ vkloginfinal vk = vklogin (); // initializeawait vk.initsdk (); // log infinal res = await vk.login (ขอบเขต: , vkscope.friends, ]); // ตรวจสอบผลลัพธ์ (res.isvalue) {// ไม่มีข้อผิดพลาด แต่เรายังไม่รู้ // ถ้าผู้ใช้เข้าสู่ระบบหรือไม่ // คุณควรตรวจสอบ iscanceled vkloginResult สุดท้ายผล = res.asvalue! .value; if (result.iscanceled) {// ผู้ใช้ยกเลิกการเข้าสู่ระบบ } else {// เข้าสู่ระบบ // ส่งโทเค็นการเข้าถึงไปยังเซิร์ฟเวอร์เพื่อตรวจสอบความถูกต้องและ AuthFinal vkaccessToken? AccessToken = result.accessToken; ถ้า (AccessToken! = null) {print ('token access: $ {accessToken.token}'); // รับข้อมูลโปรไฟล์ profileres สุดท้าย = รอ vk.getUserProfile (); โปรไฟล์สุดท้าย = profileres.asvalue? .Value; if (profile! = null) {print ('hello, $ {profile.firstname}! คุณ id: $ {profile.userid}'); } // รับอีเมล (เนื่องจากเราขอสิทธิ์อีเมล) อีเมลสุดท้าย = รอ vk.getUserEmail (); พิมพ์ ('และอีเมลของคุณคือ $ อีเมล'); } else {print ('มีบางอย่างผิดปกติ'); - - } else {// เข้าสู่ระบบล้มเหลว final errorres = res.aserror!; พิมพ์ ('ข้อผิดพลาดในขณะที่เข้าสู่ระบบ: $ {errorres.error}'); -
เมื่อคุณโทร initSdk()
ปลั๊กอินพยายามกู้คืนเซสชันก่อนหน้า หากโทเค็นหมดอายุแล้ว - มันจะถูกรีเฟรช
นอกจากนี้ในระหว่างการกู้คืนหน้าจอเข้าสู่ระบบอาจแสดงต่อผู้ใช้ (เฉพาะในกรณีที่ผู้ใช้เข้าสู่ระบบ)
นอกจากนี้คุณสามารถส่งผ่านไปยัง scope
ที่ต้องการ initSdk()
และหากเซสชันผู้ใช้ปัจจุบันไม่ได้จัดเตรียมไว้ - ผู้ใช้จะออกจากระบบ
นอกจากนี้คุณสามารถระบุเวอร์ชัน API ที่จะใช้ แต่คุณไม่ควร