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 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Google OAuth 2 和 state 参数值需要在重定向 url 中注册