DocuSign API 返回 URL,在重定向后将控制权从 WebView 转移回 React-Native 应用程序

Posted

技术标签:

【中文标题】DocuSign API 返回 URL,在重定向后将控制权从 WebView 转移回 React-Native 应用程序【英文标题】:DocuSign API return URL that transfers control back from WebView to React-Native app after redirection 【发布时间】:2016-03-25 08:26:17 【问题描述】:

我正在使用 React-Native 构建一个 android 应用程序。我也在使用 DocuSign Java API。

我的工作流提交一个 RecipientViewRequest 并接收一个 URL,Android 应用必须在 WebView 中查看该 URL 以执行签名:

https://github.com/docusign/docusign-rest-recipes/blob/master/core_recipes/CoreRecipes.java

https://facebook.github.io/react-native/docs/webview.html

这是代码:

'use strict';

var React = require('react-native');
var 
  StyleSheet,
  View,
  WebView,
  Component,
 = React;

class DocuSignView extends Component 

  render() 
    var recipientViewURL = this.props.route.data.url;
    console.log('Recipient URL is: ' + recipientViewURL);
    return (
      <View style=styles.container>
        <WebView
          source=uri: recipientViewURL, method: 'GET'
          scalesPageToFit=true
          javascriptEnabled=true
          domStorageEnabled=true
        >
      </WebView>
      </View>
    );
  

DocuSign 服务器将 WebView 重定向到我提供的 returnURL

如何指定将控制权返回给我的 React-Native android 应用程序的 returnURL?

(对于 ios 或 Android 的 React-Native 的通用答案会更好)。

【问题讨论】:

【参考方案1】:

一种选择是使用 onNavigationStateChange 事件处理程序来拦截并从 WebView 中获取控制:

render() 
    var recipientViewURL = this.props.route.data.url;
    console.log('Recipient URL is: ' + recipientViewURL);
    return (
      <View style=styles.container>
        <WebView
          source=uri: recipientViewURL, method: 'GET'
          scalesPageToFit=true
          javaScriptEnabled=true
          domStorageEnabled=true
          onNavigationStateChange=this.whenNavigationStateChanges.bind(this)
        >
      </WebView>
      </View>
    );
  

  whenNavigationStateChanges(navState)
    var navigator = this.props.navigator;
    var parsed = Url.parse(navState.url, true);
    if (parsed.hostname == 'YOUR_HOSTNAME')
      console.log("Event is: " + parsed.query.event);
      navigator.pop();
    
  

【讨论】:

【参考方案2】:

您需要配置自定义 URL 方案

对于安卓:http://developer.android.com/training/basics/intents/filters.html

对于 iOS:http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

【讨论】:

以上是关于DocuSign API 返回 URL,在重定向后将控制权从 WebView 转移回 React-Native 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在重定向期间将令牌从 API 传递到前端

Google OAuth 2 和 state 参数值需要在重定向 url 中注册

OpenID 连接成功的响应在重定向 uri 和访问令牌之间有 #

kong api网关保持url地址插件

PWA 在重定向到其他 URL 时显示 Safari 控件

使用 Microsoft Graph API 时重定向 URL 地址不正确