WeChat を使用してソーシャルログインを設定する (Set up social login with WeChat (Native))
公式 Logto コネクターによるネイティブアプリ(iOS / Android)向け WeChat ソーシャルサインイン。
このガイドは、Logto コネクターについての基本的な理解があることを前提としています。未経験の方は、コネクター ガイドを参照して始めてください。
はじめに
コネクターの概念が分からない、またはこのコネクターをサインイン体験に追加する方法が分からない場合は、 Logto チュートリアル を参照してください。
ネイティブアプリでは、WeChat のサインイン方法として Web を利用できません:WeChat アプリへの遷移が必要であり、また彼らの SDK の利用も求められます。
難しそうに聞こえるかもしれませんが、ご安心ください。このチュートリアルで簡単に対応できます。
WeChat オープンプラットフォームでモバイルアプリを作成する
すでに完了しているセクションはスキップできます。
アカウントを作成する
https://open.weixin.qq.com/ を開き、右上の「Sign Up」ボタンをクリックしてサインアップを完了します。
モバイルアプリを作成する
作成したアカウントでサインインします。「モバイルアプリケーション」(移动应用) タブで、大きな緑色の「モバイルアプリを作成」(创建移动应用) ボタンをクリックします。
申請フォームに必要な情報を入力しましょう。
基本情報
ほとんどは直感的に入力できますが、いくつかポイントがあります:
- WeChat サインインをテストしたいだけで、アプリが App Store に公開されていない場合は、「App is available」セクションで「No」を選択し、「App download link」をスキップできます。
- 「App operation flow chart」は少し厄介です。経験上、シンプルなフローチャートとアプリのスクリーンショットを用意すると審査通過の可能性が高まります。
「Next step」をクリックして進みます。
プラットフォーム情報
Logto と WeChat ネイティブサインインを統合するには、iOS / Android のいずれかまたは両方のプラットフォームを設定できます。
iOS アプリ
「iOS アプリ」(iOS 应用) をチェックし、アプリの対象デバイスタイプも選択します。
App Store での公開を「No」にした場合は、ここで「AppStore download address」の入力をスキップできます。
Bundle ID、Test version Bundle ID、Universal Links を入力します(実際にはリンクは 1 つで十分です 😂)。
Bundle ID と Test version Bundle ID は同じ値でも構いません。
WeChat でネイティブサインインするにはユニバーサルリンクが必要です。まだ設定していない場合や分からない場合は、 Apple 公式ドキュメント を参照してください。
Android アプリ
「Android アプリ」(Android 应用) をチェックします。
Application Signing Signature (应用签名) と Application Package Name (应用包名) を入力します。
署名付きアプリを作成して署名情報を取得する必要があります。詳細は Sign your app を参照してください。
署名が完了したら、signingReport タスクを実行して署名情報を取得できます。
./gradlew your-android-project:signingReport
該当ビルドバリアントのレポート内の MD5 値が Application Signing Signature (应用签名) となりますが、値からセミコロンをすべて削除し、小文字にしてください。
例:1A:2B:3C:4D -> 1a2b3c4d
審査結果を待つ
プラットフォーム情報の入力が終わったら「Submit Review」をクリックして進みます。通常、審査は早く、1~2日で完了します。
審査基準は流動的で、毎回ランダムに審査員が割り当てられているようです。最初はリジェクトされることもありますが、諦めず現状を説明し、どのように修正すればよいか尋ねてみてください。
アプリで WeChat ネイティブサインインを有効にする
iOS
アプリに Logto iOS SDK を統合済みであることを前提とします。この場合、非常にシンプルで、WeChat SDK のドキュメントを読む必要もありません:
1. Xcode プロジェクトでユニバーサルリンクと URL スキームを設定する
Xcode プロジェクト → Signing & Capabilities タブで「Associated Domains」機能を追加し、先ほど設定したユニバーサルリンクを追加します。
続いて「Info」タブで、WeChat App ID を使った カスタム URL スキーム を追加します。
最後に Info.plist を開き、LSApplicationQueriesSchemes の下に weixinULAPI と weixin を追加します。
これらの作業は合理的とは言えませんが、これが最小限の動作する方法です。詳細は 公式ガイド を参照してください。
2. LogtoSocialPluginWechat を Xcode プロジェクトに追加する
フレームワークを追加します:
そして Build Settings > Linking > Other Linker Flags に -ObjC を追加します:
このプラグインには WeChat Open SDK 1.9.2 が含まれています。プラグインをインポートすれば import WechatOpenSDK を直接利用できます。
3. LogtoClient の初期化オプションにプラグインを追加する
let logtoClient = LogtoClient(
useConfig: config,
socialPlugins: [LogtoSocialPluginWechat()]
)
4. onOpenURL を適切に処理する
LogtoClient.handle(url:) 関数は有効化したすべてのネイティブコネクターを処理します。1 回呼び出すだけで十分です。
// SwiftUI
YourRootView()
.onOpenURL { url in
LogtoClient.handle(url: url)
}
// または AppDelegate
func application(_ app: UIApplication, open url: URL, options: /*...*/) -> Bool {
LogtoClient.handle(url: url)
}
Android
アプリに Logto Android SDK を統合済みであることを前提とします。この場合、非常にシンプルで、WeChat SDK のドキュメントを読む必要もありません:
1. プロジェクトに Wechat Open SDK を追加する
Gradle プロジェクトのリポジトリに mavenCentral() が含まれていることを確認します:
repositories {
// ...
mavenCentral()
}
依存関係に Wechat Open SDK を追加します:
dependencies {
// ...
api("com.tencent.mm.opensdk:wechat-sdk-android:6.8.0") // kotlin-script
// または
api 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.0' // groovy-script
}
2. プロジェクトに WXEntryActivity を導入する
パッケージルート配下に wxapi パッケージを作成し、その中に WXEntryActivity を追加します(例:com.sample.app の場合):
// 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 {}
プロジェクト内での WXEntryActivity の最終的な配置は次のようになります(Kotlin の例):
src/main/kotlin/com/sample/app/wxapi/WXEntryActivity.kt
3. AndroidManifest.xml を修正する
AndroidManifest.xml に次の行を追加します:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sample.app">
<application>
<!-- 追加する行 -->
<activity android:name=".wxapi.WXEntryActivity" android:exported="true"/>
</application>
</manifest>
WeChat ネイティブコネクターをテストする
以上です。 サインアップ / サインインでソーシャルコネクターを有効化 を忘れずに行ってください。
WeChat ネイティブコネクターが有効化されると、アプリをビルドして動作を確認できます。
WeChat アプリがインストールされていない端末向けの対応はありません。Logto はサインイン時にこのコネクターを非表示にします( 公式開発ガイド でも推奨されています)。