Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework 什么';这个Twitter工厂错误有什么问题?_Ionic Framework_Ionic_Angularjs Factory - Fatal编程技术网

Ionic framework 什么';这个Twitter工厂错误有什么问题?

Ionic framework 什么';这个Twitter工厂错误有什么问题?,ionic-framework,ionic,angularjs-factory,Ionic Framework,Ionic,Angularjs Factory,我尝试获取Twitter提要时出错。它说:“TwitterService没有定义”。我不知道为什么会这样。我已经安装了所有的“lib”文件(sha、ngResource、ngCordoba) 这是我的控制器: myApp.controller('showART', ['$scope','$http', '$ionicLoading', '$timeout', '$sce' , '$ionicScrollDelegate' , '$ionicSlideBoxDelegate' , '$rootSc

我尝试获取Twitter提要时出错。它说:“TwitterService没有定义”。我不知道为什么会这样。我已经安装了所有的“lib”文件(sha、ngResource、ngCordoba)

这是我的控制器:

myApp.controller('showART', ['$scope','$http', '$ionicLoading', '$timeout', '$sce' , '$ionicScrollDelegate' , '$ionicSlideBoxDelegate' , '$rootScope' , '$ionicPlatform' , TwitterService , function($scope,$http, $ionicLoading, $timeout,$sce, $ionicScrollDelegate ,$ionicSlideBoxDelegate , $rootScope , $ionicPlatform, TwitterService) {...}]);
这是我的工厂:

var myApp = angular.module('xxxx.controllers', []); 

myApp.factory('TwitterService', function($cordovaOauth, $cordovaOauthUtility, $http, $resource, $q) {
                var twitterKey = "xxxx";
                var clientId = 'xxxx';
                var clientSecret = 'xxxx';

                function storeUserToken(data) {
                    window.localStorage.setItem(twitterKey, JSON.stringify(data));
                }

                function getStoredToken() {
                    return window.localStorage.getItem(twitterKey);
                }

                function createTwitterSignature(method, url) {
                    var token = angular.fromJson(getStoredToken());
                    var oauthObject = {
                        oauth_consumer_key: clientId,
                        oauth_nonce: $cordovaOauthUtility.createNonce(32),
                        oauth_signature_method: "HMAC-SHA1",
                        oauth_token: token.oauth_token,
                        oauth_timestamp: Math.round((new Date()).getTime() / 1000.0),
                        oauth_version: "1.0"
                    };
                    var signatureObj = $cordovaOauthUtility.createSignature(method, url, oauthObject, {}, clientSecret, token.oauth_token_secret);
                    $http.defaults.headers.common.Authorization = signatureObj.authorization_header;
                }

                function createTwitterPostSignature(method, url, message) {
                    var token = angular.fromJson(getStoredToken());
                    var oauthObject = {
                        oauth_consumer_key: clientId,
                        oauth_nonce: $cordovaOauthUtility.createNonce(32),
                        oauth_signature_method: "HMAC-SHA1",
                        oauth_timestamp: Math.round((new Date()).getTime() / 1000.0),
                        oauth_token: token.oauth_token,
                        oauth_version: "1.0",
                        status: message
                    };
                    var signatureObj = $cordovaOauthUtility.createSignature(method, url, oauthObject, oauthObject, clientSecret, token.oauth_token_secret);
                    $http.defaults.headers.common.Authorization = signatureObj.authorization_header;
                }

                return {
                    initialize: function() {
                        var deferred = $q.defer();
                        var token = getStoredToken();

                        if (token !== null) {
                            deferred.resolve(true);
                        } else {
                            $cordovaOauth.twitter(clientId, clientSecret).then(function(result) {
                                storeUserToken(result);
                                deferred.resolve(true);
                            }, function(error) {
                                deferred.reject(false);
                            });
                        }
                        return deferred.promise;
                    },

                    isAuthenticated: function() {
                        return getStoredToken() !== null;
                    },

                    getHomeTimeline: function() {
                        var home_tl_url = 'https://api.twitter.com/1.1/statuses/home_timeline.json';
                        createTwitterSignature('GET', home_tl_url);
                        return $resource(home_tl_url).query().$promise;
                    },
                    updateStatus: function() {
                        var message = "test from ionic";
                        var update_url = 'https://api.twitter.com/1.1/statuses/update.json';
                        var results = createTwitterPostSignature('POST', update_url, message);
                        return $resource(update_url, {'status': message}).save().$promise;
                    },
                    storeUserToken: storeUserToken,
                    getStoredToken: getStoredToken,
                    createTwitterSignature: createTwitterSignature,
                    createTwitterPostSignature: createTwitterPostSignature
                }; });
参考:


谢谢:)

您是否尝试在服务的控制器定义周围加上单引号:myApp.controller(…,'TwitterServce',TwitterService){..请确保包含服务代码的js文件正确包含在ionic index.html文件中。如果您可以将代码上传到某个地方,我可以查看它。我将“”放在手机上,它可以工作,但是…当我在手机上运行应用程序时,它不会打开窗口。