Я настроил OAuth с моим приложением Flutter и Supabase. Это работает в Интернете... Я вхожу в систему провайдера, и меня перенаправляют на мой веб-сайт с учетными данными. Однако в iOS это не работает. Я вхожу в систему провайдера, но меня по-прежнему перенаправляют на веб-сайт, а не в приложение. Я добавил CFBundleURLSchemes
к Info.plist
и связанным доменам, но это не сработало. Это функция, которую я использую, что и показывает пример Supabase:
Supabase.auth.signInWithOAuth(
pkg.Provider.apple,
redirectTo: kIsWeb ? null : '<Bundle url>://login-callback/',
);
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>*bundle id*</string>
<string>domain.com</string>
</array>
</dict>
</array>
Вы добавили схему, которую использовали, в файл info.plist? который необходим для того, чтобы ОС знала, как открыть URL-адрес с этой схемой в этом приложении. А именно:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>YourSchemeHere</string>
</array>
</dict>
</array>
и это официальный документ об этом
@Globe Не могли бы вы сказать мне, откуда вы взяли «согласно документации Supabase, мне даже не нужно было этого делать»? Потому что это на самом деле требование. Причина, по которой deeplink не работает, вероятно, связана с ошибкой в конфигурации. Что у вас есть в разделе YourSchemeHere
?
Я добавил это к нижней части вопроса для вас. Что касается документации Supabase, здесь (supabase.com/docs/reference/dart/auth-signinwithoauth) есть функция, которая говорит, что все, что вам нужно для входа в систему с помощью OAuth, — это функция, которую я использую. В нем не упоминается необходимость добавления дополнительных вещей.
Я нашел проблему. В отдельном руководстве по Supabase упоминается о необходимости добавить '<Bundle url>://login-callback/'
в качестве redirect_url
на самом сервере. При самостоятельном размещении это отображается как ADDITIONAL_REDIRECTURLS
в .env
.
Да, я добавил это, и у меня есть URL-адрес моего веб-сайта, а также URL-адрес пакета. Но, согласно документации Supabase, мне даже не нужно этого делать, это просто должно работать.