我整天都在尝试用我的代码解决这个问题,出于某种原因我得到了
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 方法,刷新所有令牌,在没有烧瓶的情况下尝试