2015-02-10 2 views
1

Я пытаюсь реализовать социальный логин (Facebook и Twitter) на стороне сервера (node.js). Тем не менее, он постоянно дает мне ошибку «TRANSPORT_UNAVAILABLE». Есть идеи?Firebase: TRANSPORT_UNAVAILABLE ошибка для входа в Facebook в node.js

Код:

function authHandler(error, authData) { 
    if (error) { 
     res.send(error); 
    } 
    else { 
     res.send("Authenticated successfully with payload:", authData); 
    } 
}; 

var args = { 
    email: req.body.email, 
    password: req.body.password, 
    provider: req.body.provider 
}; 

if (args.provider=="password") { 
    ref.authWithPassword({email: args.email, password: args.password}, authHandler); 
} 
//Provider can be only facebook or twitter 
else { 
    ref.authWithOAuthPopup(args.provider, authHandler); //Doesn't work 
} 
+0

Можете вставить код? Было бы полезно узнать, как вы пытаетесь аутентифицировать (т. Е. Какой транспорт) –

+0

Возможный дубликат [Ошибка при создании пользователя: {\ [Ошибка: для запрошенного метода нет транспорта для входа.] Код: 'TRANSPORT \ _UNAVAILABLE '}] (http://stackoverflow.com/questions/26541571/error-creating-user-error-there-are-no-login-transports-available-for-the-r) – Kato

+0

И если не тот, то этот: http://stackoverflow.com/questions/28158714/firebase-authwithoauthpopup-returns-transport-unavailable-when-using-phonegap-cl (т. е. добавление phonegap.js) – Kato

ответ

1

Это, скорее всего, проблема с браузером с помощью всплывающего окна или локальный файл пытается получить доступ к ресурсу, к которому он не имеет разрешения. Вероятно, что-то не так с вашим кодом, как есть, но вам нужно как-то обработать этот край.

Смотрите документы здесь для обхода этого вопроса: https://www.firebase.com/docs/web/guide/user-auth.html

TRANSPORT_UNAVAILABLE The requested login method is not available in the user's browser environment. Popups are not available in Chrome for iOS, iOS Preview Panes, or local, file:// URLs. Redirects are not available in PhoneGap/Cordova, or local, file:// URLs.

Обойти Facebook (то же самое с логином Twitter/Google, просто поменять имя в кавычках ниже), чтобы иметь запасной вариант с использованием перенаправление, а не всплывающее окно (предположим, что вы используете всплывающее окно здесь):

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com"); 
// prefer pop-ups, so we don't navigate away from the page 

ref.authWithOAuthPopup("google", function(error, authData) { 
    if (error) { 
    if (error.code === "TRANSPORT_UNAVAILABLE") { 
     // fall-back to browser redirects, and pick up the session 
     // automatically when we come back to the origin page 
     ref.authWithOAuthRedirect("google", function(error) { /* ... */ }); 
    } 
    } else if (authData) { 
    // user authenticated with Firebase 
    } 
} 
Смежные вопросы