2016-07-10 5 views
0

Возможно ли это создать токен Twitter и секретный токен в Nodejs и использовать его для открытия браузера для аутентификации с помощью «https://api.twitter.com/oauth/authenticate»?Twitter OAuth Ionic 2

Я использую этот способ, чтобы получить маркер:

app.get('/auth/twitter/token', function (req, res) { 
    var requestTokenUrl = 'https://api.twitter.com/oauth/request_token'; 
    var requestTokenOauth = { 
     consumer_key: "2z8MTR8KAZuFafPHsEQ0ZBgo1", 
     consumer_secret: "ksPiaQz7ihCrOh3m4iRCsXZzQuSkkmcv4CLGiJQwREWeaQl7St" 
    }; 
    request.post({ 
     url: requestTokenUrl, 
     oauth: requestTokenOauth 
    }, function (err, response, body) { 
     var oauthToken = qs.parse(body); 
     res.send(oauthToken); 
    }); 
}); 

Когда я получаю этот маркер в клиенте «https://api.twitter.com/oauth/authenticate?oauth_token=TOKEN» Я получил эту проблему:. «Эта страница больше не действительна Это выглядит как кто-то уже используется токен информации вашего провайдера, blabla .. "

Проблема связана с тем, как я получаю токен?

Я использую NG2-Cordova-аутентификации, но это Lib не имеют твиттер авторизацию, я просто пытаюсь реализовать

Это моя реализация:

"use strict"; 
var utility_1 = require("../utility"); 
var PROVIDER_NAME = "Twitter"; 
var Twitter = (function() { 
    function Twitter(options) { 
     this.twitterOptions = options; 
     this.flowUrl = "" 
    } 
    Twitter.prototype.login = function (token, tokenSecret) { 
     var _this = this; 
     return new Promise(function (resolve, reject) { 
     _ this.flowUrl = "https://api.twitter.com/oauth/authenticate?oauth_token="+token; 
      var browserRef = window.cordova.InAppBrowser.open(_this.flowUrl); 
      browserRef.addEventListener("loadstart", function (event) { 
       if ((event.url).indexOf(_this.twitterOptions.redirectUri) === 0) { 
        browserRef.removeEventListener("exit", function (event) { }); 
        browserRef.close(); 
        var parsedResponse = event.url.split("?")[1].split("&"); 
        if (parsedResponse) { 
         resolve(parsedResponse); 
        } 
        else { 
         reject("Problem authenticating with " + PROVIDER_NAME); 
        } 
       } 

      }); 
      browserRef.addEventListener("exit", function (event) { 
       reject("The " + PROVIDER_NAME + " sign in flow was canceled"); 
      }); 
     }); 
    }; 
    return Twitter; 
}()); 
exports.Twitter = Twitter; 

В моем компоненте/контроллер I сделайте это:

//With twitterToken I get the token from NodeJs 
this.API.twitterToken().subscribe(
    data => { 
     this.twitterOAuth.login(data.oauth_token, data.oauth_token_secret).then((success) => { 
     alert(JSON.stringify(success)) 
     }, (error) => { 
      alert(JSON.stringify(error)); 
     }); 
    }, 
    err => alert(JSON.stringify(err)) 
); 

ответ

1

Вы пробовали Twitter Connect plugin? Помогает ли это?

Плагин использовать Twitter Single Sign On Использование щебетать ткани SDK

Примером использования является

import {TwitterConnect} from 'ionic-native'; 

function onSuccess(response) { 
    console.log(response); 

    // Will console log something like: 
    // { 
    // userName: 'myuser', 
    // userId: '12358102', 
    // secret: 'tokenSecret' 
    // token: 'accessTokenHere' 
    // } 
} 

TwitterConnect.login().then(onSuccess, onError);