Configura el inicio de sesión social con WeChat (Nativo)
El conector oficial de Logto para el inicio de sesión social de WeChat en aplicaciones nativas (iOS y Android).
Esta guía asume que tienes un entendimiento básico de los Conectores de Logto. Para aquellos que no están familiarizados, por favor consulta la guía de Conectores para comenzar.
Comenzar
Si no conoces el concepto de conector o no sabes cómo agregar este conector a tu Experiencia de inicio de sesión, consulta el tutorial de Logto.
En aplicaciones nativas, no puedes usar la web como método de inicio de sesión de WeChat: se requiere la navegación a la app de WeChat, y también es necesario usar su SDK.
Sabemos que suena complicado, pero no te preocupes. Lo resolveremos fácilmente en este tutorial.
Crea una aplicación móvil en la Plataforma Abierta de WeChat
Puedes saltarte algunas secciones si ya las has completado.
Crear una cuenta
Abre https://open.weixin.qq.com/, haz clic en el botón "Sign Up" en la esquina superior derecha y completa el proceso de registro.
Crear una aplicación móvil
Inicia sesión con la cuenta que acabas de crear. En la pestaña "Mobile Application" (移动应用), haz clic en el gran botón verde "Create a mobile app" (创建移动应用).
Vamos a completar la información requerida en el formulario de la aplicación.
Información básica
La mayoría de los campos son bastante sencillos, y aquí tienes algunos consejos:
- Si solo quieres probar el inicio de sesión de WeChat y la app no está en la App Store, en la sección "App is available", elige "No" para omitir el "App download link".
- El "App operation flow chart" parece complicado. Según nuestra experiencia, necesitas preparar un diagrama de flujo simple y varias capturas de pantalla de la app para aumentar la posibilidad de aprobar la revisión.
Haz clic en "Next step" para continuar.
Información de la plataforma
Puedes configurar una o ambas plataformas, iOS y Android, para integrar Logto con el inicio de sesión nativo de WeChat.
App iOS
Marca "iOS app" (iOS 应用), luego selecciona el tipo de dispositivo objetivo de tu app según corresponda.
Si elegiste "No" para la disponibilidad en App Store, puedes omitir el campo "AppStore download address" aquí.
Completa Bundle ID, Test version Bundle ID y Universal Links (en realidad, solo se necesita un enlace 😂).
Bundle ID y Test version Bundle ID pueden tener el mismo valor.
WeChat requiere un universal link para el inicio de sesión nativo. Si no lo has configurado o no sabes cómo hacerlo, consulta la documentación oficial de Apple.
App Android
Marca "Android app" (Android 应用).
Completa Application Signing Signature (应用签名) y Application Package Name (应用包名).
Necesitas firmar tu app para obtener una firma. Consulta Firmar tu app para más información.
Después de firmar, puedes ejecutar la tarea signingReport para obtener la firma.
./gradlew your-android-project:signingReport
El valor MD5 del informe de la variante de compilación correspondiente será la Application Signing Signature (应用签名), pero recuerda eliminar todos los dos puntos del valor y ponerlo en minúsculas.
Ejemplo: 1A:2B:3C:4D -> 1a2b3c4d.
Esperando el resultado de la revisión
Después de completar la información de la plataforma, haz clic en "Submit Review" para continuar. Normalmente, la revisión es rápida y termina en 1-2 días.
Sospechamos que el revisor se asigna aleatoriamente en cada envío, ya que el estándar es variable. Puede que te rechacen la primera vez, ¡pero no te rindas! Explica tu situación y pregunta al revisor cómo modificarla.
Habilita el inicio de sesión nativo de WeChat en tu app
iOS
Suponemos que ya has integrado el SDK de Logto para iOS en tu app. En este caso, las cosas son bastante simples y ni siquiera necesitas leer la documentación del SDK de WeChat:
1. Configura el universal link y el esquema de URL en tu proyecto Xcode
En el proyecto Xcode -> pestaña Signing & Capabilities, agrega la capacidad "Associated Domains" y el universal link que configuraste antes.
Luego ve a la pestaña "Info", agrega un esquema de URL personalizado con el App ID de WeChat.
Finalmente, abre tu Info.plist y agrega weixinULAPI y weixin bajo LSApplicationQueriesSchemes.
Sabemos que estas acciones no son muy razonables, pero esta es la solución mínima funcional que encontramos. Consulta la guía oficial mágica para más información.
2. Agrega LogtoSocialPluginWechat a tu proyecto Xcode
Agrega el framework:
Y agrega -ObjC en Build Settings > Linking > Other Linker Flags:
El plugin incluye WeChat Open SDK 1.9.2. Puedes usar directamente import WechatOpenSDK una vez importado el plugin.
3. Agrega el plugin a las opciones de inicialización de tu LogtoClient
let logtoClient = LogtoClient(
useConfig: config,
socialPlugins: [LogtoSocialPluginWechat()]
)
4. Maneja correctamente onOpenURL
La función LogtoClient.handle(url:) gestionará todos los conectores nativos que hayas habilitado. Solo necesitas llamarla una vez.
// SwiftUI
YourRootView()
.onOpenURL { url in
LogtoClient.handle(url: url)
}
// o AppDelegate
func application(_ app: UIApplication, open url: URL, options: /*...*/) -> Bool {
LogtoClient.handle(url: url)
}
Android
Suponemos que ya has integrado el SDK de Logto para Android en tu app. En este caso, las cosas son bastante simples y ni siquiera necesitas leer la documentación del SDK de WeChat:
1. Agrega Wechat Open SDK a tu proyecto
Asegúrate de que el repositorio mavenCentral() esté en los repositorios de tu proyecto Gradle:
repositories {
// ...
mavenCentral()
}
Agrega el Wechat Open SDK a tus dependencias:
dependencies {
// ...
api("com.tencent.mm.opensdk:wechat-sdk-android:6.8.0") // kotlin-script
// o
api 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.0' // groovy-script
}
2. Introduce WXEntryActivity en tu proyecto
Crea un paquete wxapi bajo la raíz de tu paquete y agrega el WXEntryActivity en el paquete wxapi (Tomando com.sample.app como ejemplo):
// WXEntryActivity.kt
package com.sample.app.wxapi
import io.logto.sdk.android.auth.social.wechat.WechatSocialResultActivity
class WXEntryActivity: WechatSocialResultActivity()
// WXEntryActivity.java
package com.sample.app.wxapi
import io.logto.sdk.android.auth.social.wechat.WechatSocialResultActivity
public class WXEntryActivity extends WechatSocialResultActivity {}
La ubicación final de WXEntryActivity en el proyecto debería verse así (tomando Kotlin como ejemplo):
src/main/kotlin/com/sample/app/wxapi/WXEntryActivity.kt
3. Modifica el AndroidManifest.xml
Agrega la siguiente línea a tu AndroidManifest.xml:
\<?xml version="1.0" encoding="utf-8"?>
\<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sample.app">
\<application>
\<!-- línea a agregar -->
\<activity android:name=".wxapi.WXEntryActivity" android:exported="true"/>
\</application>
\</manifest>
Prueba el conector nativo de WeChat
Eso es todo. No olvides habilitar el conector social en el registro e inicio de sesión.
Una vez habilitado el conector nativo de WeChat, puedes compilar y ejecutar tu app para ver si funciona.
WeChat no tiene un plan para aquellos dispositivos sin la app de WeChat instalada. Logto ocultará este conector durante el inicio de sesión en ese caso (que es la forma recomendada según la guía oficial de desarrollo).