gpt4 book ai didi

angularjs - 成功 callbackId 错误 ... ReferenceError : Can't find variable: $http

转载 作者:可可西里 更新时间:2023-11-01 17:08:57 30 4
gpt4 key购买 nike

我正在尝试使用 ionic ( Angular )构建混合移动应用程序。对于这个应用程序,我正在进行一个依赖于 jQuery 的 oAuth 调用,因此加载了两个库,以及 oAuth 和我的应用程序的脚本。

<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="cordova.js"></script>
<script src="js/jquery-1.11.1.min.js"></script>
<script src="js/auth.js"></script>
<script src="js/app.js"></script>

启动身份验证的调用是在 app.js 中的 ionic ready 事件中完成的,如下所示:

$ionicPlatform.ready(function(){
oAuthProcess.authorize({
client_id: 'client',
client_secret: 'secret',
scope: 'scope',
redirect_uri: 'fake url'
}).done(function(data){
localStorage.setItem('accessToken', data.access_token);
localStorage.setItem('refreshToken', data.refresh_token);
var accessToken = localStorage.getItem("accessToken");
alert(accessToken);
}).fail(function(data){alert(data.error);});
});

oAuthProcess 函数位于 auth.js 文件中,如下所示。它打开 inAppBrowser 以执行身份验证,然后关闭它,将访问 token 返回给应用程序以允许调用 API:

var oAuthProcess = {
authorize: function(options) {
var deferred = $.Deferred();
var authUrl = 'some url' + $.param({
client_id: options.client_id,
redirect_uri: options.redirect_uri,
response_type: 'code',
scope: options.scope
});
//Open inAppBrowser with authUrl
var authWindow = window.open(authUrl, '_blank', 'location=no,toolbar=no');
authWindow.addEventListener('loadstart', function(e) {
var url = '' + e.url + '';
//Upon opening in
var code = url.match(/\?code=(.+)$/);
var error = url.match(/\?error=(.+)$/);
if (code != null || error != null) {
authWindow.close();
}
if (code) {
$http({
method: 'POST',
url: 'some url',
data: {code: code[1], client_id: options.client_id, client_secret: options.client_secret, redirect_uri: options.redirect_uri, grant_type: 'authorization_code'}
}).success(function(data) {
deferred.resolve(data);
}).error(function(data){
deferred.reject(response.responseJSON);
});
} else if (error) {
deferred.reject({
error: error[1]
});
}
});
return deferred.promise();
}

};

该应用程序能够加载 inAppBrowser 并创建一个 token ,但是会出现以下错误,这会阻止 token 在 inAppBrowser 关闭后返回到应用程序。

2015-01-09 16:48:04.299 myApp[2146:483400] 成功 callbackId 错误:InAppBrowser85303841:ReferenceError:找不到变量:$http

任何解决此问题或替代方法的帮助将不胜感激。

提前致谢。

最佳答案

我只是在这里输入它,这样我就可以向您展示代码示例而不是注释...

假设您提供的示例是整个 auth.js 文件,添加 PSL 提供的示例,因此文件现在如下所示:

var $http = angular.injector(['ng']).get('$http');
var oAuthProcess = {
authorize: function(options) {
var deferred = $.Deferred();
var authUrl = 'some url' + $.param({
client_id: options.client_id,
redirect_uri: options.redirect_uri,
response_type: 'code',
scope: options.scope
});
//Open inAppBrowser with authUrl
var authWindow = window.open(authUrl, '_blank', 'location=no,toolbar=no');
authWindow.addEventListener('loadstart', function(e) {
var url = '' + e.url + '';
//Upon opening in
var code = url.match(/\?code=(.+)$/);
var error = url.match(/\?error=(.+)$/);
if (code != null || error != null) {
authWindow.close();
}
if (code) {
$http({
method: 'POST',
url: 'some url',
data: {code: code[1], client_id: options.client_id, client_secret: options.client_secret, redirect_uri: options.redirect_uri, grant_type: 'authorization_code'}
}).success(function(data) {
deferred.resolve(data);
}).error(function(data){
deferred.reject(response.responseJSON);
});
} else if (error) {
deferred.reject({
error: error[1]
});
}
});
return deferred.promise();
}

关于angularjs - 成功 callbackId 错误 ... ReferenceError : Can't find variable: $http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27870728/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com