tweepy.errors.Forbidden:403 Forbidden 没有解释

问题描述 投票:0回答:0

我整天都在尝试用我的代码解决这个问题,出于某种原因我得到了

  File "C:\Users\Watch\Desktop\Line Web App\main.py", line 104, in index
    twitter_client.create_tweet(text=message,user_auth=False)
  File "C:\Users\Watch\AppData\Local\Programs\Python\Python310\lib\site-packages\tweepy\client.py", line 835, in create_tweet
    return self._make_request(
  File "C:\Users\Watch\AppData\Local\Programs\Python\Python310\lib\site-packages\tweepy\client.py", line 129, in _make_request
    response = self.request(method, route, params=request_params,
  File "C:\Users\Watch\AppData\Local\Programs\Python\Python310\lib\site-packages\tweepy\client.py", line 100, in request
    raise Forbidden(response)
tweepy.errors.Forbidden: 403 Forbidden
Forbidden

我觉得我在网上尝试了一切,但就是无法正常工作,facebook 身份验证和发布工作正常! 当我运行 index() 时也会出现问题

import requests
import json
import tweepy
import facebook
import os
from flask import Flask, render_template, request, redirect, session

app = Flask(__name__)
app.secret_key = 'nivos'
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'


def read_creds(filename):
    with open(filename) as f:
        credentials = json.load(f)
    return credentials


credentials = read_creds('credentials.json')

twitter_client_id = credentials['twitter']['client_id']
twitter_client_secret = credentials['twitter']['client_secret']
twitter_callback_url = 'http://localhost:5000/twitter-callback'
auth = tweepy.OAuth2UserHandler(
    client_id=twitter_client_id,
    redirect_uri=twitter_callback_url,
    scope=["tweet.read", "tweet.write"],
    client_secret=twitter_client_secret
    )

facebook_app_id = credentials['facebook']['app_id']
facebook_app_secret = credentials['facebook']['app_secret']
facebook_callback_url = 'http://localhost:5000/facebook-callback'

# Set your page ID
page_id = '106571142400269'


@app.route('/')
def get_auth():
    facebook_login_url = 'http://127.0.0.1:5000/facebook-login'
    twitter_login_url = 'http://127.0.0.1:5000/twitter-login'
    return render_template('index.html', facebook_login_url=facebook_login_url,twitter_login_url=twitter_login_url)


@app.route('/facebook-login', methods=['GET', 'POST'])
def facebook_login():
    graph = facebook.GraphAPI()
    link = graph.get_auth_url(facebook_app_id, facebook_callback_url,
                                            ['publish_to_groups', 'pages_show_list', 'pages_read_engagement',
                                             'pages_manage_posts'])
    return redirect(link, code=302)
@app.route('/twitter-login', methods=['GET', 'POST'])
def twitter_login():
    twitter_login_url = auth.get_authorization_url()
    return redirect(twitter_login_url,code=302)

@app.route('/facebook-callback', methods=['GET', 'POST'])
def get_token():
    code = request.args.get('code')
    graph = facebook.GraphAPI()
    access_token = graph.get_access_token_from_code(code, facebook_callback_url, facebook_app_id, facebook_app_secret)['access_token']
    # Define the API endpoint URL and parameters
    url = f'http://graph.facebook.com/{page_id}'
    params = {
        'fields': 'access_token',
        'access_token': access_token
    }
    # Send a GET request to the API endpoint
    response = requests.get(url, params=params)
    session['facebook_access_token'] = response.json()['access_token']
    session['facebook_page_id'] = response.json()['id']
    return redirect('/')

@app.route('/twitter-callback', methods=['GET', 'POST'])
def get_twitter_token():
    access_token = auth.fetch_token(request.url)
    session['twitter_access_token'] = access_token['access_token']
    print(access_token)

    return redirect('/')



@app.route('/post', methods=['POST'])
def index():
    if request.method == 'POST':
        twitter_access_token = session['twitter_access_token']
        facebook_access_token = session['facebook_access_token']
        facebook_page_id = session['facebook_page_id']
        facebook_client = facebook.GraphAPI(access_token=facebook_access_token)
        twitter_client = tweepy.Client(
            bearer_token=twitter_access_token
        )

        # Get the message from the form
        message = request.form['message']
        # Post the message on the page
        facebook_client.put_object(
            parent_object=facebook_page_id,
            connection_name='feed',
            message=message,
        )
        twitter_client.create_tweet(text=message,user_auth=False)

        return redirect('/')
    else:
        return render_template('index.html')


if __name__ == '__main__':
    app.run()

我尝试过的事情:使用所有不同的 oauth 方法,刷新所有令牌,在没有烧瓶的情况下尝试

python twitter oauth tweepy twitter-oauth
© www.soinside.com 2019 - 2024. All rights reserved.