Экспо и реагировать на родной: перенаправить обратно к работающему приложению после входа в систему с сервера идентификации в веб-представлении - PullRequest
0 голосов
/ 24 июня 2019

У меня есть собственное приложение, которое изначально работает на клиенте expo. Я использую веб-представление для входа на сервер идентификации и перенаправления обратно в приложение. Это работает нормально в рамках выставки. В автономном приложении для Android он перенаправляет обратно в приложение, но похоже, что он запускается снова, вместо того, чтобы идти к моему Linking.addEventListener, который у меня есть, чтобы извлечь данные из перенаправления.

Моя функция связывания:

componentDidMount = () => {
loginSrc =  AUTHORIZATION_URL + "?" + getHybridRequestBody();
console.log(loginSrc);
Linking.addEventListener("url", this._onExtractCode);

}

componentWillUnmount = () => { Linking.removeEventListener ("url", this._onExtractCode); }

Мой модал, открывающий веб-просмотр

<Modal visible={this.state.showLoginModal} transparent={true}> 
            <View style={[styles.container, {flex: 1, backgroundColor: "white"}]}>
              <TouchableOpacity style={{width: 35, height: 35}} onPress={this.onModalClose}> 
                <Ionicons name="ios-close" size={30} color={Colors.Teal} ></Ionicons>  
              </TouchableOpacity>   
              <WebView source={ { uri:loginSrc}} ></WebView>

            </View>
          </Modal>

URL для входа в систему:

io.testing.is://?callback=authentication

app.json:

"scheme": "io.testing.is",

Автономное приложение Android выполняет перенаправление на приложение, но не вызывает обратный вызов Linking.addEventListener _onExtractCode.

для ios я понятия не имею что будет

1 Ответ

0 голосов
/ 24 июня 2019

Перезвоните стояку, как показано ниже.

Стоит отметить, что обратный вызов для Linking.addEventListener('url', this._onExtractCode) получает событие, а не строку URL-адреса напрямую. Чтобы получить URL-адрес, вам нужно будет сделать event.url. Таким образом, вместо этого вы можете сделать

Linking.addEventListener('url', ({ url }) => this._onExtractCode(url))
...