2012-06-17 35 views
13

chỉ ngày hôm qua trên Heroku tôi bắt đầu bị lỗi này trên twitter đăng nhập ở tốcPassport-twitter: thất bại trong việc tìm yêu cầu mã thông báo trong phiên

Error: failed to find request token in session 
    at Strategy.<anonymous> (/app/node_modules/passport-twitter/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth.js:120:54) 
    at Strategy.authenticate (/app/node_modules/passport-twitter/lib/passport-twitter/strategy.js:82:40) 
    at Passport.authenticate (/app/node_modules/passport/lib/passport/middleware/authenticate.js:153:14) 
    at callbacks (/app/node_modules/express/lib/router/index.js:272:11) 
    at param (/app/node_modules/express/lib/router/index.js:246:11) 
    at pass (/app/node_modules/express/lib/router/index.js:253:5) 
    at Router._dispatch (/app/node_modules/express/lib/router/index.js:280:4) 
    at Object.handle (/app/node_modules/express/lib/router/index.js:45:10) 
    at Context.next (/app/node_modules/express/node_modules/connect/lib/http.js:204:15) 
    at Context.<anonymous> (/app/node_modules/passport/lib/passport/context/http/actions.js:64:8) 

bất cứ đề nghị?

Trả lời

18

YUHU tôi đã giải quyết. vấn đề là một số lần trang web của tôi có www và đôi khi không, do đó, có vấn đề với các phiên, rõ ràng.

+3

Đây là [ý chính của tuyến đường tôi đã sử dụng] (https://gist.github.com/htsh/5796569) để xóa www hàng đầu khỏi tên miền sau khi chạy vào vấn đề tương tự với hộ chiếu –

2

Điều này là hoàn toàn ngẫu nhiên, và tôi là một Node newb ... do đó, áp dụng muối tự do.

Tôi đã nhìn thấy lỗi này và theo dõi ngăn xếp tương tự tối nay, thực sự. Hóa ra là tôi vừa mới thay đổi lộ trình callback auth của tôi trông như thế này:

app.use('/auth/twitter/callback', twitterCallback);

Xem làm thế nào tôi sử dụng use có thay vì get? Khi tôi thay đổi nó trở lại, tôi đã ngừng nhận được lỗi này.

My stack trace nhìn một chút khác nhau, mặc dù:

DEBUG: Error: failed to find request token in session at Strategy. (/Users/drhayes/src/incursion/node_modules/passport-twitter/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth.js:122:54)
at Strategy.authenticate (/Users/drhayes/src/incursion/node_modules/passport-twitter/lib/passport-twitter/strategy.js:82:40)
at Passport.authenticate (/Users/drhayes/src/incursion/node_modules/passport/lib/passport/middleware/authenticate.js:153:14)
at Object.handle (native)
at next (/Users/drhayes/src/incursion/node_modules/express/node_modules/connect/lib/http.js:204:15)
at /Users/drhayes/src/incursion/node_modules/passport/lib/passport/middleware/authenticate.js:99:9
at /Users/drhayes/src/incursion/node_modules/passport/lib/passport/http/request.js:46:7
at pass (/Users/drhayes/src/incursion/node_modules/passport/lib/passport/index.js:229:30)
at /Users/drhayes/src/incursion/node_modules/passport/lib/passport/index.js:237:36
at /Users/drhayes/src/incursion/routes/auth.coffee:42:14

đã nguồn của bạn đã thay đổi thời gian gần đây? Có một vết sưng sửa đổi trong slug triển khai của bạn?

+0

ý của bạn là gì đối với trường hợp sửa đổi? Có, tôi thay đổi mã gần đây. Tôi cũng phát hiện ra rằng nếu tôi xóa tất cả các phiên được lưu trữ, tôi không nhận được lỗi. – nick

+1

Xin lỗi, không sửa đổi, nhưng bản phát hành. Kiểm tra: https://devcenter.heroku.com/articles/releases Mỗi khi bạn đẩy vào Heroku, họ tăng số phát hành. Bạn có thể sử dụng nó để rollback trên mặt của họ mà không cần sử dụng Git. –

+0

ok Tôi hiểu, nhưng điều này không giải quyết được vấn đề: ( – nick

9

Tôi cũng gặp lỗi này khi sử dụng Node.js, Express & Hộ chiếu, mặc dù bản sửa lỗi của tôi khác với những gì được mô tả ở trên.

tôi đã sao chép và dán đoạn mã sau từ 'hiện phiên' tài liệu ...

app.use(session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})) 

Đó an toàn: true chút chỉ thị rõ ràng phiên sử dụng 'https', mà tôi don không có thiết lập trong môi trường phát triển của tôi. Khi tôi xóa nó, lỗi đã biến mất.

4

Trong cài đặt ứng dụng Twitters, đảm bảo các lĩnh vực sau đây có các giá trị:

Website: http://127.0.0.1:3000

URL Callback: http://127.0.0.1:3000/auth/twitter/callback

** Tôi đang làm việc với cổng số 3000. Bạn có thể thay đổi điều đó với bất kỳ cổng nào bạn đang làm việc.

Bây giờ, hãy điều hướng đến http://127.0.0.1:3000 trong trình duyệt của bạn. Điều này sẽ giải quyết vấn đề của bạn.

+1

Tôi đã nhận được lỗi này vì tôi đã đưa ra yêu cầu cho twitter từ localhost: 9000 và sau khi xác thực, nó đã chuyển hướng ngược trở lại 127.0.0.1:9000, một miền khác để cookie không được tìm thấy vì nó đã được thiết lập trên localhost chứ không phải 127.0.0.1 Thay thế localhost bằng 127.0.0.1 làm việc cho tôi Cảm ơn! – Larrydx

0

Tôi đã có một lần, tôi cố định nó bằng cách thay đổi các cuộc gọi trở lại URL

từ127.0.0.1

đểlocalhost

+0

Tôi đã thay đổi url cb của mình thành localhost, tuy nhiên twitter vẫn quay trở lại 127.0.0.1, có thể cần thời gian để truyền bá. – Dercni

1

Twitter không chấp nhận localhost vì vậy tôi đã buộc phải sử dụng các cài đặt sau:

Trong https://apps.twitter.com/app/ ....

website = http://127.0.0.1:3000 
callback url: http://localhost:3000/login/twitter/callback 

Trong hộ chiếu :

'callbackURL'  : 'http://localhost:3000/login/twitter/callback' 

Lưu ý: url twitter callback công trình sử dụng cả hai 127.0.0.1 localhost &

1

Đây là một câu trả lời rất muộn, nhưng tôi chỉ tìm một lý do này có thể xảy ra. Khi những người đã thực hiện phiên giao dịch cho biết rằng MemoryStore không có nghĩa là để sản xuất, họ thực sự có nghĩa là nó.

Nếu bạn đang sử dụng phân nhóm, (pm2 hoặc mãi mãi hoặc chạy trên Heroku), bộ nhớ cookie dựa trên bộ nhớ sẽ có các vấn đề riêng. Bạn sẽ thường mất cookie hoặc hỏng chúng (vì có hai hoặc nhiều quá trình riêng biệt ở phía máy chủ, không chia sẻ bộ nhớ chung).

Nếu bạn muốn chạy ứng dụng Node của bạn với cụm, bạn cần phải sử dụng Redis hoặc một số cookie sẽ DB hậu thuẫn lưu trữ

1

tôi đã sử dụng hộ chiếu-flickr và cố định cùng một vấn đề bằng cách thay đổi 127.0.0.1 để localhost

passport.use(new FlickrStrategy({ 
    ... 
    callbackURL: "http://localhost:3000/auth/flickr/callback" 
    }, 
Các vấn đề liên quan