【发布时间】:2014-12-20 15:06:07
【问题描述】:
我正在开发一个离子移动应用程序,我想在其中重定向到请求用户同意并重定向到回调 url 的第三方 web 流,我应该专门为我获取令牌作为权限令牌以进行进一步的 API 调用。由于 ionic 本身是一个 html5 移动应用程序,我应该为重定向 url 指定什么,以便控件返回到我的移动应用程序?
【问题讨论】:
标签: android ionic-framework hybrid-mobile-app
我正在开发一个离子移动应用程序,我想在其中重定向到请求用户同意并重定向到回调 url 的第三方 web 流,我应该专门为我获取令牌作为权限令牌以进行进一步的 API 调用。由于 ionic 本身是一个 html5 移动应用程序,我应该为重定向 url 指定什么,以便控件返回到我的移动应用程序?
【问题讨论】:
标签: android ionic-framework hybrid-mobile-app
这不是您所要求的,但效果很好。
想法是你使用 $cordovaInAppBrowser 打开一个 webview 并监听事件,即
$cordovaInAppBrowser:loadstart
和
$cordovaInAppBrowser:loaderror
然后您可以查看传递的错误和事件参数并使用它们来确定是否要调用
$cordovaInAppBrowser.close();
这会让你回到你的 ionic 应用
angular.module('myApp', ['ionic', 'ngCordova']).controller('AppCtrl', function($rootScope, $ionicPlatform, $cordovaInAppBrowser) {
$scope.openThirdPartyWhatever = function() {
$ionicPlatform.ready(function() {
var options = {
location: 'yes',
clearcache: 'no',
toolbar: 'yes'
};
$cordovaInAppBrowser.open('http://www.myAwesomeSite.com', '_blank', options)
});
};
//at some point your app tries to load 'http://localhost:8100/send-me-back-to-app'
$rootScope.$on('$cordovaInAppBrowser:loadstart', function(e, event) {
//and this function is called, so you do something like
if(event.url === 'http://localhost:8100/send-me-back-to-app'){
$cordovaInAppBrowser.close();
}
});
$rootScope.$on('$cordovaInAppBrowser:loaderror', function(e, event) {
$cordovaInAppBrowser.close();
alert('sorry, something went wrong');
});
});
【讨论】:
听起来你需要处理弹出和重定向,你需要安装cordova“inappbrowser”插件才能在应用浏览器中打开第三方webflow,然后恢复正常。
请查看这篇文章,他们在其中解释如何使用带有 Ionic 和 cordova 的 firebase 登录方法来处理 facebook 身份验证。它描述了解决问题所需的非常相似的步骤。
Firebase simple login with Ionic and Cordova
如果您急于从“让它在模拟器中工作”开始,但我建议您快速阅读所有文章。
我不确定您使用的是哪种第三方 webflow,但也许这可以帮助您: Zapier
【讨论】: