2017-08-03 33 views
0

我試圖讓twitter的通行證認證工作。我的設置如下:React(使用redux)前端(create-react-app),Node(使用express)API。兩者都在本地主機上運行(不同的端口)。
用戶去/login,並點擊該調度登錄操作按鈕:沒有'Access-Control-Allow-Origin'標題出現在請求的資源上。 - 反應/節點API

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

服務器上的路線:

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

而且回調的路線:

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

loginSuccess此刻不做任何事情。

這是完全錯誤我得到:
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.

我進行代理從反應前端(本地主機:3000)請求到localhost:8080。

如果我去到鉻devtools的網絡選項卡,然後從Twitter的API,它看起來像這樣的迴應:enter image description here

如果有人知道如何獲得護照的Twitter認證與這種設置工作請告訴我。 。/:

+0

看到的是https需要一臺服務器/stackoverflow.com/questions/35879943/twitter-api-authorization-fails-cors-preflight-in-browser/35898961#35898961,並看到聲明「典型的模式是,對Twitter API的請求發生在後端而不是直接,例如,從基於瀏覽器的應用程序中「在https://twittercommunity.com/t/will-twitter-api-support-cors-headers-soon/28276/3我想大多數人都繼續處理這個將自定義處理寫入其Web應用程序的服務器端代碼中,或者e lse通過使用一些庫來實現他們正在使用的服務器端運行時 – sideshowbarker

+0

您在自己的服務器上安裝的CORS中間件不會改變「https:// api.twitter.com/oauth/authenticate'這一事實請求的端點在其響應中不包含Access-Control-Allow-Origin響應標頭 – sideshowbarker

回答

1

噩耗,微博不會讓你調用其API客戶端,你才能做到這一點:(

看看這個Quora answer

+0

但是我在服務器上調用了API,我不是嗎?客戶端唯一做的事情是在我的服務器上向'/ api/auth/twitter'發出請求。其餘的應該用護照在那裏處理。 – eRodY

相關問題