我试图为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;或者在设备上运行它,登录后我收到以下错误:
我理解&#34; http://localhost&#34;不是应用程序的设备根目录,但我不知道我应该将其改为究竟是什么。
答案 0 :(得分:0)
我认为该URL必须是有效的URL。如果我在电话上运行时使用“本地主机URL”,则它不起作用,但如果我将URL与域一起使用,则效果很好。以示例http://domain-name/auth/callback/
代替http://localhost/auth/callback
。您可以使用InAppBrowser
来检查此answer的密钥库是否有效。
希望有帮助。