POST 向 Twitter 请求问题 API
POST request issues to Twitter API
我一直在使用 NextJS,Twitter-lite 来构建一个使用 Twitter 应用程序的应用程序,我基本上是在尝试实现用户可以 post 从应用程序向他们的 Twitter 帐户发送推文的功能。我还使用 Next-Auth 为 Twitter 实施 oAuth。
所以经过一些工作,我设法让它工作并突出显示我的错误 - 访问令牌。我想在用户登录后从他们那里获取访问令牌,
在下面的示例中 - 我 运行 这个脚本和一个 post 确实更新到我的帐户
这是我的 api/twitter/post.js
代码
import Twitter from 'twitter-lite';
import { getSession } from 'next-auth/react'
import { getToken } from 'next-auth/jwt';
export default async (req, res) =>{
var Twit = require('twit')
const session = await getSession({ req });
const token = await getToken({
req,
secret: process.env.NEXTAUTH_SECRET
});
console.log(token.twitter.accessToken)
var T = new Twit({
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token: 'process.env.TWITTER_ACCESS_TKN',
access_token_secret: 'process.env.TWITTER_ACCESS_TKN_SCRT'
});
T.post('statuses/update', { status: 'hello worldj!' }, function(err, data, response) {
console.log(data)
})
return res.status(200).json({ status: 'ok'});
}
现在这确实有效,当我点击我的 api 路线时,一条新推文被 post 编辑,但只发送到 'my' 帐户,因为我提供了我的 access_tokens
,我我想知道如何让用户访问令牌,我已经使用 NextAuth 为他们签名,所以我确定我只是遗漏了一些东西。
所以我想出了这个,
在 [...nextauth].js
的回调函数中,我只是用过时的名称获取 access_tokens
,新名称是 account.oauth_token
对于遇到此问题的任何人 -(尝试获取登录用户访问令牌以访问受限的 Twitter 端点)
callbacks: {
async jwt({ token, user, account = {}, profile, isNewUser }) {
if (account.provider && !token [account.provider]) {
token[account.provider] = {};
}
if(account.oauth_token) {
token[account.provider].accessToken = account.oauth_token;
}
if (account.oauth_token_secret) {
token [account.provider].refreshToken = account.oauth_token_secret;
}
return token
},
这就是您获取登录用户 access_token
和 access_token_secret
的方式
我一直在使用 NextJS,Twitter-lite 来构建一个使用 Twitter 应用程序的应用程序,我基本上是在尝试实现用户可以 post 从应用程序向他们的 Twitter 帐户发送推文的功能。我还使用 Next-Auth 为 Twitter 实施 oAuth。
所以经过一些工作,我设法让它工作并突出显示我的错误 - 访问令牌。我想在用户登录后从他们那里获取访问令牌,
在下面的示例中 - 我 运行 这个脚本和一个 post 确实更新到我的帐户
这是我的 api/twitter/post.js
代码import Twitter from 'twitter-lite';
import { getSession } from 'next-auth/react'
import { getToken } from 'next-auth/jwt';
export default async (req, res) =>{
var Twit = require('twit')
const session = await getSession({ req });
const token = await getToken({
req,
secret: process.env.NEXTAUTH_SECRET
});
console.log(token.twitter.accessToken)
var T = new Twit({
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token: 'process.env.TWITTER_ACCESS_TKN',
access_token_secret: 'process.env.TWITTER_ACCESS_TKN_SCRT'
});
T.post('statuses/update', { status: 'hello worldj!' }, function(err, data, response) {
console.log(data)
})
return res.status(200).json({ status: 'ok'});
}
现在这确实有效,当我点击我的 api 路线时,一条新推文被 post 编辑,但只发送到 'my' 帐户,因为我提供了我的 access_tokens
,我我想知道如何让用户访问令牌,我已经使用 NextAuth 为他们签名,所以我确定我只是遗漏了一些东西。
所以我想出了这个,
在 [...nextauth].js
的回调函数中,我只是用过时的名称获取 access_tokens
,新名称是 account.oauth_token
对于遇到此问题的任何人 -(尝试获取登录用户访问令牌以访问受限的 Twitter 端点)
callbacks: {
async jwt({ token, user, account = {}, profile, isNewUser }) {
if (account.provider && !token [account.provider]) {
token[account.provider] = {};
}
if(account.oauth_token) {
token[account.provider].accessToken = account.oauth_token;
}
if (account.oauth_token_secret) {
token [account.provider].refreshToken = account.oauth_token_secret;
}
return token
},
这就是您获取登录用户 access_token
和 access_token_secret