proyecto26 / react-native-inappbrowser

📱InAppBrowser for React Native (Android & iOS) 🤘
https://www.npmjs.com/package/react-native-inappbrowser-reborn
MIT License
1.31k stars 223 forks source link

Endlessly loading PayPal loop #326

Closed haveamission closed 2 years ago

haveamission commented 2 years ago

Which platform(s) does your issue occur on?

Android - seems to be all versions, and the simulator

Please, provide the following version numbers that your issue occurs with:

"dependencies": {
    "@fortawesome/fontawesome-svg-core": "^1.2.25",
    "@fortawesome/free-solid-svg-icons": "^5.11.2",
    "@fortawesome/react-fontawesome": "^0.1.4",
    "@fortawesome/react-native-fontawesome": "^0.1.0",
    "@invertase/react-native-apple-authentication": "^2.1.5",
    "@react-native-community/cli-platform-android": "^2.9.0",
    "@react-native-community/geolocation": "^2.0.2",
    "@react-native-google-signin/google-signin": "^7.0.1",
    "@tradle/react-native-http": "^2.0.1",
    "asyncstorage-down": "^4.2.0",
    "axios": "^0.19.0",
    "axios-retry": "^3.1.2",
    "connected-react-router": "^6.5.2",
    "events": "^3.2.0",
    "font-awesome": "^4.7.0",
    "geocoder": "^0.2.3",
    "moment": "^2.24.0",
    "native-base": "^3.2.2",
    "node": "^12.16.1",
    "patch-package": "^6.4.7",
    "polished": "^3.4.1",
    "pushwoosh-react-native-plugin": "^6.1.10",
    "query-string": "^6.8.3",
    "querystring": "^0.2.0",
    "react": "^16.10.2",
    "react-native": "^0.63.4",
    "react-native-animatable": "^1.3.2",
    "react-native-appsflyer": "^6.2.42",
    "react-native-carrier-info": "^1.1.2",
    "react-native-circular-progress": "^1.3.0",
    "react-native-css-transformer": "^1.2.4",
    "react-native-deck-swiper": "^2.0.5",
    "react-native-deep-link": "^0.2.9",
    "react-native-device-info": "^4.0.1-beta.5",
    "react-native-exception-handler": "^2.10.8",
    "react-native-fbsdk": "^3.0.0",
    "react-native-flip-card": "^3.5.5",
    "react-native-fontawesome": "^7.0.0",
    "react-native-geocoding": "^0.4.0",
    "react-native-gesture-handler": "^1.4.1",
    "react-native-idfa": "^4.1.0",
    "react-native-inappbrowser-reborn": "^3.6.3",
    "react-native-keycloak-social-login": "github:haveamission/react-native-keycloak-social-login.git",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-loading-spinner-overlay": "^1.0.1",
    "react-native-localize": "^1.3.0",
    "react-native-modal-overlay": "^1.3.1",
    "react-native-permissions": "^3.1.0",
    "react-native-rate": "^1.2.4",
    "react-native-restart": "0.0.13",
    "react-native-safe-area-context": "^3.3.2",
    "react-native-share": "^3.1.1",
    "react-native-size-matters": "^0.3.0",
    "react-native-snap-carousel": "^3.8.1",
    "react-native-status-bar-height": "^2.5.0",
    "react-native-svg": "^12.1.1",
    "react-native-uuid-generator": "^6.1.1",
    "react-native-view-overflow": "0.0.4",
    "react-native-webview": "^7.6.0",
    "react-redux": "^7.1.1",
    "react-router-native": "^5.0.1",
    "react-transform-hmr": "^1.0.4",
    "react-use": "^17.3.2",
    "redux": "^4.0.4",
    "redux-api-middleware": "^3.0.1",
    "redux-persist": "^6.0.0",
    "redux-persist-transform-filter": "0.0.18",
    "string-format": "^2.0.0"
  },
  "devDependencies": {
    "@babel/core": "^7.6.0",
    "@babel/runtime": "^7.6.3",
    "@react-native-community/eslint-config": "^0.0.5",
    "babel-jest": "^24.9.0",
    "babel-plugin-react-native-stylename-to-style": "^0.13.0",
    "eslint": "^6.3.0",
    "jest": "^24.9.0",
    "metro-react-native-babel-preset": "^0.56.0",
    "react-test-renderer": "16.8.6",
    "schedule": "^0.4.0"
  },

Please, tell us how to recreate the issue in as much detail as possible.

Use a secure browser on Android with the following code:

  const paypalModalLaunch = async () => {
    if (await InAppBrowser.isAvailable()) {
      await InAppBrowser.openAuth(
        generateURL('prod'),
        paypalRedirectURI,
        InAppBrowserProps,
      )
        .then(response => {
          if (response.type === 'success' && response.url) {
            clearTimeout(timeout);
            Linking.openURL(response.url);
          }
        })
}
};

The generated URL is https://www.paypal.com/connect?

export const InAppBrowserProps = {
  showTitle: true,
  toolbarColor: '#6200EE',
  secondaryToolbarColor: 'black',
  enableUrlBarHiding: true,
  enableDefaultShare: true,
  forceCloseOnRedirection: true,
  animations: {
    startEnter: 'slide_in_right',
    startExit: 'slide_out_left',
    endEnter: 'slide_in_left',
    endExit: 'slide_out_right',
  },
};
const paypalProdURI = 'https://www.paypal.com/connect?';
const paypalScope = 'email%20address';
const paypalFlowEntry = 'static';
const paypalResType = 'code';

Unfortunately there is no good way to include a reproducible example, because it involves returning data to the URI scheme inside a specific app.

This entire process works on iOS, but not Android.

This is what happens - it never stops loading:

Screen Shot 2022-01-25 at 11 23 47 AM

haveamission commented 2 years ago

Nevermind, was due to an intent issue