Ich bin der Umsetzung OAuth Twitter Nutzer-Zeichen in (Flask API und Angular)Flask CORS - kein Zugang-control-allow-Ursprung-Header vorhanden auf einer Umleitung()
Ich halte die folgende Fehlermeldung erhalten, wenn ich das Klicken Melden Sie sich mit twitter-Taste und ein Pop-up-Fenster öffnet sich:
XMLHttpRequest cannot load https://api.twitter.com/oauth/authenticate?oauth_token=r-euFwAAAAAAgJsmAAABTp8VCiE. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
ich die python-Cors Pakete bin mit CORS zu handhaben, und ich bereits instagram Zeichen in richtig funktioniert haben. Ich glaube, es hat etwas damit zu tun, dass die Antwort eine Weiterleitung ist, aber das Problem nicht beheben konnte.
Mein Kolben-Code sieht wie folgt aus:
app = Flask(__name__, static_url_path='', static_folder=client_path)
cors = CORS(app, allow_headers='Content-Type', CORS_SEND_WILDCARD=True)
app.config.from_object('config')
@app.route('/auth/twitter', methods=['POST','OPTIONS'])
@cross_origin(origins='*', send_wildcard=True)
#@crossdomain(origin='')
def twitter():
request_token_url = 'https://api.twitter.com/oauth/request_token'
access_token_url = 'https://api.twitter.com/oauth/access_token'
authenticate_url = 'https://api.twitter.com/oauth/authenticate'
# print request.headers
if request.args.get('oauth_token') and request.args.get('oauth_verifier'):
-- omitted for brevity --
else:
oauth = OAuth1(app.config['TWITTER_CONSUMER_KEY'],
client_secret=app.config['TWITTER_CONSUMER_SECRET'],
callback_uri=app.config['TWITTER_CALLBACK_URL'])
r = requests.post(request_token_url, auth=oauth)
oauth_token = dict(parse_qsl(r.text))
qs = urlencode(dict(oauth_token=oauth_token['oauth_token']))
return redirect(authenticate_url + '?' + qs)
ich gegabelt Ihr Repo, die in dem Artikel bereitgestellt wird Sie auf dem Laufenden. Erhalten Sie den gleichen Fehler auf der Clientseite. 'XMLHttpRequest kann nicht geladen werden https://api.twitter.com/oauth/authorize?oauth_token=FozjZwAAAAAAgJsmAAABTqljgg0. Auf der angeforderten Ressource ist kein Header "Access-Control-Allow-Origin" vorhanden. Herkunft 'null' ist daher nicht erlaubt access.' –
Wie es aussieht, der Client startet, aber senden eine Post-Anfrage an den Server einer anderen Domäne (Flask api) authorize/twitter, die dann die Twitter-Weiterleitung zurückgibt, und das ist, wo ich Sehen Sie die Fehlermeldung in der Client-App –
Der Fehler, den Sie mir zeigen, schlägt vor, dass der Browser eine Anfrage direkt an die Twitter-API sendet, so dass es nicht mit dem übereinstimmt, was Sie sagen. Beachten Sie die URL https: //api.twitter.com/... in der Fehlermeldung. Die Implementierung in meinem Tutorial sendet niemals Ajax-Anfragen direkt an den Provider, alle Anfragen gehen über die Flask-Anwendung (die ich praktisch in der gleichen Domäne wie die Client-Seite-App anbiete). – Miguel