无法在设备上找到OAuth回调页面

时间:2015-10-12 12:12:14

标签: android cordova oauth ionic-framework hybrid-mobile-app

我试图为Ionic应用程序实现OAuth2 这是我登录的:

    this.readParameter = function(key, callback) {
  $http({
    method: "GET",
    url: "XXXXXXX",
    headers: { 'Content-Type': 'application/json' }
  }).then(function successCallback(response) {
    callback(response)
  }, function errorCallback(response) {
    throw new Error("Error");
  })
};

这是我的登录控制器:

<ion-view view-title="Login" align-title="left">
<ion-nav-bar class="bar-positive">
    <ion-nav-back-button class="button-clear icon ion-ios7-arrow-back"> 
    </ion-nav-back-button>
</ion-nav-bar>
<ion-content class="padding">
    <img src="img/Exact_Logo.jpg" border="0"></a><br/>
    <a class="button icon-right ion-chevron-right" ng-click="loginToFoo()">Sign in with Foo Account</a>
  </div>
</ion-content>

我还将这些行添加到config.xml:

'use strict';

angular.module('fooapp')
.controller('loginCtrl', function($scope, $state, $http) {

$scope.signIn = function(user) {
 console.log('Sign-In', user);
 $state.go('tab.home');
}

$scope.loginToFoo = function() {

var URL_AUTH = 'https://foo.com/api/oauth2/auth';
var RESPONSE_TYPE_CODE = 'code';
var CLIENT_ID = '{xxxxxx-xxxxx-xxxxx-xxxxx}';
var REDIRECT_URL = 'http://localhost/callback';


var loginUrl = URL_AUTH + '?client_id=' + CLIENT_ID + 
              '&redirect_uri=' + REDIRECT_URL + 
              '&force_login=1&response_type=' + RESPONSE_TYPE_CODE ;

window.open(loginUrl, "_system", "location=yes"); 
};
})

虽然我已经添加了cordova-plugin-inappbrowser,因为我使用了“离子服务”,我可以在浏览器中看到正确的结果,但是当我使用离子模拟android&#39;或者在设备上运行它,登录后我收到以下错误: enter image description here

我理解&#34; http://localhost&#34;不是应用程序的设备根目录,但我不知道我应该将其改为究竟是什么。

1 个答案:

答案 0 :(得分:0)

我认为该URL必须是有效的URL。如果我在电话上运行时使用“本地主机URL”,则它不起作用,但如果我将URL与域一起使用,则效果很好。以示例http://domain-name/auth/callback/代替http://localhost/auth/callback。您可以使用InAppBrowser来检查此answer的密钥库是否有效。

希望有帮助。