无法在 Ionic 应用程序中启动 Twitter oauth 功能

Cannot launch twitter oauth function in Ionic app

关于堆栈溢出的第一个问题,将尝试做对。我在 Ionic 应用程序中使用 Twitter oauth 时遇到问题,使用库 cordova 和 ng-cordova-oath 等。

我已经成功地管理了 linkedin、facebook 和 google 身份验证,在登录时从用户配置文件中检索数据,但是这个让我打败了。

认为 语法没问题,因为我在浏览器中提醒 运行,但是当我模拟 android 来测试登录时,我我从 Twitter 登录中没有收到任何响应,无论是成功还是失败。

我已经三次检查了 Twitter 开发者网站的应用程序设置,正在使用回调 url“http://localhost/callback”。我已经尝试将 ng-cordova-oauth 中的回调 uri 覆盖为实时 url,并在开发人员控制台中调整匹配设置,因为这对我的登录链接不起作用,但我什至没有到达流程的回调部分。

Index.html:

<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="js/ng-cordova.min.js"></script>
<script src="js/ng-cordova-oauth.min.js"></script>
<script src="js/sha1.js"></script>
<script src="cordova.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>

app.js 提供库的相关块:

angular.module('app', ['ionic', 'ngCordova', 'ngCordovaOauth', 'ui.router', 'app.controllers'])

controllers.js:

angular.module('app.controllers', [])

    .controller('LoginCtrl', function($scope, $state, $cordovaOauth, $http) {
        $scope.twitterLogin = function(){

            alert("running twitterLogin()"); // Alert works

            $cordovaOauth.twitter(
                "P1E***************", /* Client ID */
                "3et**************************************") /* Client Secret */ 
            .then(function(result){

                 alert("result token recieved"); /* Not running, can't access result to get token */

            }, function(error){
                alert("Error getting result token"); /* Not running, runs in browser when not emulated, of course the login process can't be tested in the browser */
            });

        alert("Oauth finished"); // Not running, reaches here in browser after failed login, but never reaches here in emulator
    }
});

login.html:

<div class="inline">
    <img src="img/loginTwitter.png" ng-click="twitterLogin()" />
</div>
    <html ng-app="app">
    <head>
    // Did you load angularjs in scripts?
    <script src="lib/ionic/js/ionic.bundle.js"></script>
    <script src="js/ng-cordova.min.js"></script>
    <script src="js/ng-cordova-oauth.min.js"></script>
    <script src="js/sha1.js"></script>
    <script src="cordova.js"></script>
    <script src="js/app.js"></script>
    <script src="js/controllers.js"></script>
    </head>
    <body ng-controller="LoginCtrl">
    <div class="inline">
        <img src="img/loginTwitter.png" ng-click="twitterLogin()" />
    </div>
    </body>
    </html>

您的模板应如下所示。

已解决!对我来说,如果其他人遇到这个问题,那就是我使用了错误版本的 sha1.js 库。使用 ng-cordova-oauth 所需的版本是版本 1 分支,而不是 GitHub 存储库上的主分支。