簡體   English   中英

對 Twitter API 的 POST 請求問題

[英]POST request issues to Twitter API

我一直在使用 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 登錄了他們所以我確定我只是錯過了一些東西。

所以我想出了這個,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM