我正在从Flutter切换到Supabase,并且遇到了身份验证问题。虽然我可以使用正确的重定向值成功启动URL,但我总是被重定向到网站URL,该URL只能用于Web,而不能用于iOS或Android。下面是我在苹果使用的功能,但所有其他提供商也会出现这种情况。
const isWeb = Platform.OS === "web";
const redirectTo = isWeb
? "https://web.example.com/login-callback/"
: "com.example.react://login-callback/";
export const signInWithApple = async () => {
const { data, error } = await supabase.auth.signInWithOAuth({
provider: "apple",
options: {
redirectTo: redirectTo,
},
});
if (error !== null) {
console.log(error?.message);
return "error";
} else {
console.log(data);
Linking.openURL(data.url);
return "success";
}
};
启动前记录的URL是正确的,例如LOG {"provider": "apple", "url": "https://api.example.com/auth/v1/authorize?provider=apple&redirect_to=com.example.react%3A%2F%2Flogin-callback%2F"}
,但我总是被重定向到类似https://web.example.com/#access_token=*****
的地方。我在Flutter上遇到过类似的问题,那是因为我没有在Supabase中添加额外的重定向,但我已经添加了。我还确认我在info.plist
for iOS中设置了CFBundleURLSchemes
,但没有修复它。
1条答案
按热度按时间3pmvbmvn1#
如果是自托管:
检查
ADDITIONAL_REDIRECT_URLS
中的逗号后面是否有空格。正确:
ADDITIONAL_REDIRECT_URLS="URL,URL,URL"
错误:
ADDITIONAL_REDIRECT_URLS="URL, URL, URL"