javascript - Twitter API 的 POST 请求问题

我一直在使用 NextJS, Twitter-lite 来构建一个使用 twitter 应用程序的应用程序,我基本上是在尝试实现用户可以从应用程序向他们的 twitter 帐户发布推文的功能。我还使用 Next-Auth 为 twitter 实现 oAuth。

因此,经过一番工作,我设法使其工作并突出显示我的错误 - 访问令牌。我想在用户登录后从用户那里获取访问令牌,

在下面的示例中 - 我运行此脚本,并且确实将帖子更新到我的帐户

这是我的 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 路由时,一条新推文被发布但只发布到“我的”帐户,因为我提供了我的 access_tokens,我想知道如何让用户访问令牌,我已经登录了使用 NextAuth 所以我确定我只是遗漏了一些东西。

回答1

所以我想出了这个,

[...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_tokenaccess_token_secret 的方式

相似文章

随机推荐

最新文章