【发布时间】:2016-05-24 00:30:57
【问题描述】:
我正在尝试在节点应用程序中通过 Twitter 启用 oauth2 登录。我有我的 Twitter 帐户,我被列入电子邮件白名单,更改了 Twitter 开发页面上的设置(以便在登录时通知用户我的应用可以访问他们的电子邮件)。
但用户对象仍然不包含电子邮件条目。电子邮件是一个不同的请求,还是我遗漏了什么?我会将服务器代码放在下面,并且可以按需启动 Web 服务器,以防有人想查看控制台输出。
我的 server.js 中的相关代码:
var express = require('express'),
request = require('request'),
path = require('path'),
fs = require('fs'),
bodyParser = require("body-parser");
var Twitter = require("node-twitter-api");
var app = express();
...
var twitter = new Twitter({
consumerKey: 'XXXXXXX',
consumerSecret: 'XXXXXX',
callback: 'http://thelionstestingjungle.com'});
var _requestSecret;
app.get("/tokenRequest", function(req, res) {
console.log('Token request');
twitter.getRequestToken(function(err, requestToken, requestSecret) {
if (err) {
console.log('Token request error');
res.status(500).send(err);
} else {
console.log('Request secret: ' + requestSecret);
_requestSecret = requestSecret;
res.redirect("https://api.twitter.com/oauth/authenticate?oauth_token=" + requestToken);
}
});});
app.get("/accessToken", function(req, res) {
console.log('Access token');
var requestToken = req.query.oauth_token,
verifier = req.query.oauth_verifier;
twitter.getAccessToken(requestToken, _requestSecret, verifier, function(err, accessToken, accessSecret) {
if (err) {
console.log('Get info error');
res.status(500).send(err);
} else {
twitter.verifyCredentials(accessToken, accessSecret, function(err, user) {
if (err) {
console.log('Verification in get info error');
res.status(500).send(err);
} else {
console.log('User: ' + JSON.stringify(user));
res.send(user);
}
});
}
});});
...
【问题讨论】: