Flutter: Facebook Login โดยไม่ต้องผ่าน Firebase

เขียน Flutter ให้ Login ด้วย Facebook โดยไม่ต้องผ่าน Firebase แบ่งออกเป็น 3 ขั้นตอน

สร้างและตั้งค่า Facebook App ก่อน

ขั้นที่ 1. เข้า https://developers.facebook.com/ โดยใช้ Account facebook ของเราเอง

ขั้นที่ 2. เลือก MyApp แล้วก็ Create App

ขั้นที่ 3. เลือก тип приложения เป็น Consumer

ขั้นที่ 4. ตั้งชื่อ App อะไรก็ได้ ใส่ Email แล้วกด Create App ระบบจะถาม Password ของ facebook ก็ใส่แล้วกด submit

จะได้ App ตามตัวอย่างข้างล่าง

ขั้นที่ 5. กด Set up ที่ Facebook Login แล้วเลือก Android (กรณีที่เป็น Android app)

ขั้นที่ 6. ตั้งค่าสำหรับ Android app กด Next ไปถึง Step 3 เลย

  • ขั้นที่ 6.1. Имя пакета ให้ใส่ имя пакета ของ app โดยไปที่ไฟล์ android/app/src/build.gradle

  • ขั้นที่ 6.2. Default Activity ก็ใส่ имя пакета ตามข้างบนแล้วตามด้วย .MainActivity

ขั้นที่ 7. ที่ Шаг 4 ต้องสร้าง Key hash ของเครื่องที่เขียนโปรแกรม Android นั้นๆ ต้องทำทุกเครื่องที่ใช้ Build application ถ้าเป็นเครื่อง Build ก็ต้องทำใหม่

  • ขั้นที่ 7.1. ใช้โปรแกรม openssl ในการรัน ถ้าเครื่องไม่มี openssl ก็ให้ดาวน์โหลดจาก https://code.google.com/archive/p/openssl-for-windows/downloads

  • ขั้นที่ 7.2. รันคำสั่ง โดยต้องเปลี่ยน C:UsersUSERNAME เป็น path ของ user ในเครื่อง windows และ PATH_TO_OPENSSL_LIBRARY เป็น path ที่เก็บโปรแกรม openssl ที่แตก zip ไว้

keytool -exportcert -alias androiddebugkey -keystore "C:UsersUSERNAME.androiddebug.keystore" | "PATH_TO_OPENSSL_LIBRARYbinopenssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARYbinopenssl" base64
Вход в полноэкранный режим Выйти из полноэкранного режима
  • ขั้นที่ 7.3. มันถาม password ให้ใส่เป็น «android» แล้วจะได้ Key hash ออกมา

  • ขั้นที่ 7.4. Копирование хэша ключа ไปใส่ในช่องของ Шаг 4

ถ้ามันถูกต้องมันต้องมีเป็นข้อความ Warning ออกมา ถ้ามันเป็น keyhash ออกมาเลย แบบนั้นอาจไม่ได้เพราะว่าตัว debug. keystore มันไม่ได้มี password (default) เป็น android ถ้าเอา keyhash ไปใช้แล้ว มันจะไม่สามารถ login กับ facebook account อื่นได้ มันจะได้แต่กับ facebook ตัวเอง

ขั้นที่ 8. ข้าม Step 5 ไปที่ Step 6 ต้องไปเพิ่มที่ Android app

  • ขั้นที่ 8.1. ไปที่ папка android/app/src/main/res/values (ใน flutter จะไม่เหมือนที่แสดงในเวบ facebook นะ)

  • ขั้นที่ 8.2. สร้างไฟล์ชื่อ *strings.xml *แล้วเพิ่ม code โดยใส่ FACEBOK_APPNAME และ FACEBOK_APPID

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">FACEBOK_APPNAME</string>    
<string name="facebook_app_id">FACEBOK_APPID</string>
<string name="fb_login_protocol_scheme">fbFACEBOK_APPID</string>
</resources>
Вход в полноэкранный режим Выйти из полноэкранного режима
  • ขั้นที่ 8.3. ไปที่ไฟล์ android/app/src/main/AndroidManifest.xml เพิ่ม Code อนุญาตการเชื่อมต่ออินเทอร์เข้าไป ก่อน tag Application
<uses-permission android:name="android.permission.INTERNET"/>
Вход в полноэкранный режим Выйти из полноэкранного режима
  • ขั้นที่ 8.4. เพิ่ม Code เข้าไป ใน tag Application
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
   <action android:name="android.intent.action.VIEW" />
   <category android:name="android.intent.category.DEFAULT" />
   <category android:name="android.intent.category.BROWSABLE" />
   <data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
Войти в полноэкранный режим Выйти из полноэкранного режима

ขั้นที่ 9. กด Next ไปเรื่อยๆ เสร็จสิ้นการตั้งค่าใน Facebook App (ช่วงแรก)

ติดตั้งและใช้ Flutter plugin

ขั้นที่ 1. ติดตั้ง package https://pub.dev/packages/flutter_facebook_auth (คู่มือ facebook.meedu.app)

ขั้นที่ 2. ถ้ารัน Flutter อยู่ต้อง Stop Flutter ก่อนแล้ว Build ใหม่

ขั้นที่ 3. import library ในหน้าที่จะเขียนเชื่อมต่อกับ facebook api

import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';
Вход в полноэкранный режим Выход из полноэкранного режима

ขั้นที่ 4. เขียน Code ในปุ่มเพื่อเรียกการ login

final LoginResult result = await FacebookAuth.instance.login(); // by default we request the email and the public profile
// or FacebookAuth.i.login()
if (result.status == LoginStatus.success) {
 // you are logged
 final AccessToken accessToken = result.accessToken!;
}
Вход в полноэкранный режим Выйти из полноэкранного режима

ขั้นที่ 5. ถ้าสำเร็จจะได้ accressToken กลับมา แต่ตอนนี้จะใช้ได้แค่ Account facebook ที่เป็น account ที่สร้าง Facebook app เท่านั้น

ขั้นที่ 6. ใช้คำสั่ง เพื่อเรียกข้อมูล User (ค่า default จะเป็น public_profile, email).

final userData = await FacebookAuth.instance.getUserData();
Войти в полноэкранный режим Выйти из полноэкранного режима
{
  "email" = "dsmr.apps@gmail.com",
  "id" = 3003332493073668,
  "name" = "Darwin Morocho",
  "picture" = {
      "data" = {
          "height" = 50,
          "is_silhouette" = 0,
          "url" = "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=3003332493073668",
          "width" = 50,
      },
  }
}
Войти в полноэкранный режим Выйти из полноэкранного режима

เปิด Mode ของ Facebook App เป็น Live Mode เพื่อให้ใช้งาน Login กับ Facebook Account อื่นได้

ถ้าไม่เปิดจะใช้งานได้แค่ Facebook Account ของ Dev คนนั้นเท่านั้น

ขั้นที่ 1. การเปิด Live mode ของ Facebook ต้องมีการใส่ privacy policy ด้วย ซึ่งเราอาจจะไปสร้างได้จากเวบของไทย pdpa.pro

ขั้นที่ 2. เลือก สร้าง Policy

ขั้นที่ 3. เลือก Privacy Policy, ยอมรับเงื่อนไข, กดยืนยันการเลือก

ขั้นที่ 4. กรอก email แล้วกด เริ่มสร้าง

ขั้นที่ 4. กรอกชื่อแอปภาษาไทย ภาษาอังกฤษ เลือกไทย แล้วกดถัดไป

ขั้นที่ 5. เลือก Facebook login แล้วกดถัดไป

ขั้นที่ 6. เลือกตามภาพ

ขั้นที่ 7. บันทึกข้อมูล และกดรับ Policy

ขั้นที่ 8. ระบบจะส่งเมล์เข้าไปยังเมล์ที่เรากรอกไว้

ขั้นที่ 9. เข้าเมล์แล้วกดยืนยันอีเมล์

ขั้นที่ 10. ตั้งรหัสและเข้าระบบ จะเห็น policy ให้ copy url มา

ขั้นที่ 11. กลับไปที่ Facebook APP เอาลิงค์ไปใส่ที่ Privacy Policy URL และ User data deletion แล้วกด save changes

ขั้นที่ 12. ตรวจนี้มี Error ไม่ต้องกังวล ให้ copy key hashes ทั้งหมดใส่ notepad ไว้ก่อน กด Remove App Store ออกก่อน แล้วกด save changes

ขั้นที่ 13. มาที่เมนู App Review แล้วเลือก Permission and Features

ขั้นที่ 14. ถ้ามีหน้าต่างนี้กด Not Now

ขั้นที่ 15. ส่วนของ** Email** ถ้าเป็น Standard access อยู่ จะใช้กับ Facebook account อื่นไม่ได้ จะได้แค่ตัวเอง ให้กด get advanced access
กดแล้วต้องรอประมาณ 5-10 วินาที

ถ้าขึ้นมาแบบนี้ แสดงว่า ไม่ได้ ให้กลับไปลบ App Store ขั้นตอนที่ 12

ถ้าขึ้นมาแบบนี้ แสดงว่า ได้ ติ๊กแล้วกด Confirm มันจะถามให้ใส่ password ของ facebook 1 ครั้ง

ถ้าสำเร็จจะเป็นแบบนี้

ขั้นที่ 16. ส่วนของ** public_profile** ถ้าเป็น Standard access อยู่ จะใช้กับ Facebook account อื่นไม่ได้ จะได้แค่ตัวเอง ให้กด get advanced access
กดแล้วต้องรอประมาณ 5-10 วินาที

ทำเหมือน email

จนได้แบบนี้ ถือว่า สมบูรณ์

ขั้นที่ 17. ไปที่เมนู Setting > Basic

กดเปิดโหมด Live

จะขึ้นให้เช็คเรื่องของการใช้ข้อมูล กด Start Checkup

กด Get Started

เลือก 2 ตัวแล้วกด Continue

เลือก แล้ว กด Continue

กด Submit

ขั้นที่ 18. กดเปิดโหมด live อีกรอบ จะเปิดได้

ขั้นที่ 19. เลื่อนลงมาที่ปุ่ม + Add Platform แล้วกด

เลือก Android แล้วกด Next

เลือก Google Play แล้วกด Next

เอา Key hashes ที่ Copy ไว้มาวาง ถ้าหายแล้ว ก็ไปทำให้ที่ ส่วนที่ 1 ข้อ 7.2
ใส่ имя пакета, имя класса ต้องพิมพ์เอานะ ห้าม Copy วางพิมพ์เสร็จแต่ละช่องกด Enter ด้วย
แล้วกด сохранить изменения

Ошибка อยู่ไม่เป็นไร

จบกระบวนการฝั่งตั้งค่า ต่อไปจะเป็นฝั่งการเขียน Code ใน Flutter

Оцените статью
devanswers.ru
Добавить комментарий