2017-08-03 5 views
0

Ich versuche Pass Authentifizierung mit Twitter zu arbeiten. Mein Setup ist wie folgt: Reagieren (mit Redux) Frontend (create-react-app), Knoten (mit Express) API. Beide laufen auf localhost (verschiedene Ports).
Benutzer geht an /login und klickt auf eine Schaltfläche, die meldet sich die Versendungen:Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. - React/Node API

export function login() { 
    return dispatch => { 
     return axios.get('/api/auth/twitter') 
      .then(() => {}) 
    } 
} 

Die Route auf dem Server:

router.get('/twitter', passport.authenticate('twitter')); 

Und die Route für den Rückruf:

router.get('/twitter/callback', passport.authenticate('twitter', {failureRedirect: '/login'}), loginSuccess); 

loginSuccess tut im Moment nichts.

Dies ist der vollständige Fehler erhalte ich:
XMLHttpRequest cannot load https://api.twitter.com/oauth/authenticate?oauth_token=fGVctgAAAAAA1y22AAABXah3t3o. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:3000' is therefore not allowed access.

Ich Proxying Anfragen aus dem Frontend reagieren (localhost: 3000): 8080 auf localhost.

Wenn ich auf die Registerkarte Netzwerk der Chrom devtools gehen und wählen Sie die Antwort von der twitter api es wie folgt aussieht: enter image description here

Wenn jemand weiß, wie Pass-twitter-Authentifizierung erhalten mit dieser Art von Einrichtung zu arbeiten lass es mich wissen, bitte.

+0

Siehe https: /. /stackoverflow.com/questions/35879943/twitter-api-authorization-fails-cors-preflight-in-browser/35898961#35898961 und siehe die Aussage "Das typische Muster ist, dass Anfragen an die Twitter-API eher im Backend als direkt passieren sagen wir aus einer browserbasierten App "unter https://twittercommunity.com/t/will-twitter-api-support-cors-headers-soon/28276/3 Ich schätze, dass die meisten sich damit beschäftigen, entweder durch benutzerdefinierte Verarbeitung in den serverseitigen Code für ihre Web-Apps schreiben oder e lse mit einer Bibliothek, die es für was auch immer serverseitige Laufzeit tut sie verwenden – sideshowbarker

+0

No CORS Middleware, die Sie auf Ihrem eigenen Server installieren wird die Tatsache ändern, dass "https: // api.twitter.com/oauth/authenticate" Der Endpunkt, an den Sie eine Anfrage stellen, enthält nicht den Antwort-Control-Allow-Origin-Antwort-Header in seinen Antworten. – sideshowbarker

Antwort

1

Traurige Nachricht wird Twitter lassen Sie nicht seine API-Client-Seite aufzurufen, benötigen Sie einen Server, um das zu tun :(

in diesem Werfen Sie einen Blick Quora answer

+0

Aber ich rufe die API auf dem Server an, oder? Das einzige, was der Client tut, ist eine Anfrage an '/ api/auth/twitter' auf meinem Server. Der Rest sollte dort mit Pass abgewickelt werden. – eRodY

Verwandte Themen