inappbrowser-reborn 在 Android 构建版本中反应本机身份验证失败

问题描述 投票:0回答:1

我有一个使用react-native-inappbrowser-reborn 的身份验证流程。我已经设置了重定向深层链接,并且适用于 Android 和 iOS 调试构建。然而,在 Android 上,当我构建版本时,登录成功后,浏览器立即关闭并响应:

{"message": "chrome tabs activity destroyed", "type": "dismiss"}

重定向深层链接是 demo://success?token='abc'

它在 iOS 和 Android 调试版本以及 iOS 发布版本(Android 除外)上都可以正常工作

AndroidManifest.xml

 <intent-filter android:label="demo app">
       <action android:name="android.intent.action.VIEW" />
       <category android:name="android.intent.category.DEFAULT" />
       <category android:name="android.intent.category.BROWSABLE" />
       <data android:scheme="demo" android:host="success"/> 
</intent-filter>

我的登录

onPress={async () => {
  try {
     //when login success web will redirect to this demo://sucess?token='abc'
     //Config.baseUrlTwo = "https://demo.com/"
     const browser = await InAppBrowser.openAuth(Config.baseUrlTwo + "oauth/authenticate",
              "demo://success",
              { forceCloseOnRedirection: false, showInRecents: true }
            );
            if (browser && browser.type === "success") {
              let token = "";
              let getToken = browser.url.match(/'([^']+)'/g) || [];
              if (getToken.length) {
                getToken = getToken.map((match) => match.slice(1, -1));
                token = getToken[0];
              } else if (browser.url.includes("%27")) {
                getToken = browser.url.split("%27") || [];
                if (getToken.length) {
                  token = getToken[1];
                }
              }
              if (token !== "") {
                props.dispatch(Login({ token, ...props }));
              }
            } else {
              Alert.alert(JSON.stringify(browser));
            }
          } catch (error) {
            Alert.alert(error.message);
          }
        }}

我不知道这个bug从哪里来

android react-native authentication inappbrowser react-native-inappbrowser-reborn
1个回答
0
投票

请确认:

  1. 将代码包装在 if 检查中:
    await InAppBrowser.isAvailable()
  2. demo://success
    正在发布应用程序中工作。尝试在笔记应用程序中输入该网址并按链接
  3. 尝试将
    forceCloseOnRedirection
    更改为 true 或 false。

奖励:根据他们的文档,还请尝试添加

RNInAppBrowserModule.onStart(this);
,这将有助于检查浏览器是否受支持/可用,并在应用程序启动时立即启动它。

© www.soinside.com 2019 - 2024. All rights reserved.