gpt4 book ai didi

node.js - 使用 Twitter 登录

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:19 33 4
gpt4 key购买 nike

我正在尝试在我的 node.js 应用 中实现使用 Twitter SingIn。首先,我调用了 https://api.twitter.com/oauth/request_token,twitter 给了我 oauth_token,然后我调用了 https://api.twitter.com/oauth/authenticate?oauth_token=TWITTER_OAUTH_TOKEN,这会打开一个新窗口,显示用户可以接受此应用程序进行登录。用户接受后,twitter 使用 oauth_tokenoauth_verifier 调用callback url。现在我调用 https://api.twitter.com/oauth/access_token 来获取 access_token。我得到 access_token 就像给定的格式

{ 
oauth_token: 'NEW_TWITTER_OAUTH_TOKEN',
oauth_token_secret: 'NEW_TWITTER_OAUTH_TOKEN_SECRET',
user_id: 'TWITTER_USER_ID',
screen_name: 'TWITTER_SCREEN_NAME',
x_auth_expires: '0'
}

现在我正在尝试获取更多用户信息,例如user_email、user_pic等。我使用以下参数调用以下 api https://api.twitter.com/1.1/account/verify_credentials.json:

 let hmac = crypto.createHmac('sha1', 'thisIsTest');
hmac.update(uuid.v4());
let hash = hmac.digest('hex');

var profileOauth = {
oauth_consumer_key: 'twitter_consumer_key',
oauth_nonce: uuid.v4(),
oauth_signature_method:'HMAC-SHA1',
oauth_signature: hash,
oauth_timestamp: Date.parse(new Date()),
oauth_version: '1.0',
oauth_token: 'twitter_accessToken_oauth_token'
};

request.get({
url: 'https://api.twitter.com/1.1/account/verify_credentials.json',
// qs: { include_email: true },
oauth: profileOauth,
json: true
}, function(err2, resp, profile) {

console.log("profile 1 : ", profile);
res.json(profile);

});

我收到以下错误:

  profile 1 :   { errors: [ { code: 215, message: 'Bad Authentication data.' } ] }

有什么建议吗?提前致谢。

最佳答案

var profileOauth = {
oauth_consumer_key: 'twitter_consumer_key',
oauth_nonce: uuid.v4(),
oauth_signature_method:'HMAC-SHA1',
oauth_signature: hash,
oauth_timestamp: Date.parse(new Date()),
oauth_version: '1.0',
oauth_token: 'twitter_accessToken_oauth_token'
};

尝试用此替换上面的代码

var profileOauth = {
oauth_consumer_key: 'twitter_consumer_key',
oauth_consumer_key_secret: 'twitter_consumer_key_secret', //add consumer_key secret
oauth_nonce: uuid.v4(),
oauth_signature_method:'HMAC-SHA1',
oauth_signature: hash,
oauth_timestamp: Date.parse(new Date()),
oauth_version: '1.0',
oauth_token: 'twitter_accessToken_oauth_token',
oauth_token_secret: 'oauth_token_secret' // add oauth_token_secret
};

我认为您忘记在参数列表中包含应用程序消费者 key 和用户 oauth token key 。

关于node.js - 使用 Twitter 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45540268/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com