无法在 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 存储库上的主分支。
关于堆栈溢出的第一个问题,将尝试做对。我在 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 存储库上的主分支。