Firebase cook ie проблема для аутентификации Twitter - PullRequest
0 голосов
/ 12 февраля 2020

В настоящее время я пытаюсь разрешить пользователям входить в мое Vue. js приложение через Twitter-аутентификацию. По сути это код , который я использую. Каждый раз, когда я нажимаю кнопку входа в Twitter, я получаю эту проблему:

Повар ie, связанный с межсайтовым ресурсом в http://google.com/, был установлен без SameSite атрибут. В будущем выпуске Chrome будут доставляться файлы cookie с межсайтовыми запросами, только если они установлены с SameSite=None и Secure. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе «Приложения»> «Хранилище»> «Файлы cookie» и получить дополнительную информацию по https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.

Любая идея как как я могу решить это? Любая помощь будет принята с благодарностью. Я чувствую, что эти две части кода могут быть проблемой, но я не уверен.

store. js

import Vue from 'vue'
import Vuex from 'vuex'
import * as firebase from 'firebase/app'

Vue.use(Vuex)

export const store = new Vuex.Store({
    state: {
        user: null
    },
    getters: {
        user (state) {
            return state.user
        }
    },
    mutations: {
        SET_USER (state, payload) {
            state.user = payload
        },
        LOGOUT (state, payload) {
            state.user = null
        }
    },
    actions: {
        autoSignIn({ commit }, payload) {
            const newUser = {
                userDetails: payload.providerData
            }
            commit('SET_USER', newUser)
        },

        signIn({ commit }) {
            var provider = new firebase.auth.TwitterAuthProvider();
            firebase.auth().signInWithRedirect(provider);
            firebase.auth().getRedirectResult().then(result => {

                // The signed-in user info.
                var user = result.user;
                commit('SET_USER', user)
            }).catch(error => {
                alert(error)
                return
            })
        },
        logout({ commit }) {
            firebase.auth().signOut().then(function () {
                commit('LOGOUT')
            }).catch(function (error) {
                alert(error)
                return
            });

        }
    }
})

main. js

import Vue from 'vue'
import App from './App'
import router from './router'
import {store} from './vuex/store'
import * as firebase from 'firebase/app'
import Vuex from 'vuex'
import {config} from './firebaseConfig'
// Firebase App (the core Firebase SDK) is always required and must be listed first


// If you enabled Analytics in your project, add the Firebase SDK for Analytics
import "firebase/analytics"

// Add the Firebase products that you want to use
import "firebase/auth"
import "firebase/firestore"



Vue.use(Vuex)

Vue.config.productionTip = false

/* eslint-disable no-new */

firebase.initializeApp(config)

const check = firebase.auth().onAuthStateChanged((user) => {
  new Vue({
    el: '#app',
    router,
    components: { App },
    template: '<App/>',
    store,
    created() {
      if (user) {
        store.dispatch('autoSignIn', user)
      }
    }
  })
  check()
})

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

У меня был неправильный URL обратного вызова в моем приложении Twitter. Не знал, что firebase дал вам URL-адрес обратного вызова после того, как вы вставили API / секретный ключ API в firebase.

0 голосов
/ 13 февраля 2020

Это предупреждение исходит от google.com повара ie, поэтому вы не можете на это повлиять. Вы можете больше узнать о контексте этих изменений на https://web.dev/samesite-cookies-explained, однако вам не нужно предпринимать никаких действий. Если есть какие-либо предупреждения, связанные с вашим доменом, то вам следует проверить, есть ли соответствующее значение SameSite для вашего повара ie.

Чтобы объяснить, что здесь происходит, даже если вы используете Вход в Twitter, возможно, на вашем сайте есть какой-то сторонний ресурс от Google. Это может быть получение библиотек Firebase, Google Analytics или, возможно, вы также загружаете туда библиотеку входа в Google. Поскольку в вашем браузере есть несколько приемлемых файлов cookie, они также отправляются по этим запросам. У них нет добавленного атрибута SameSite, поэтому в результате применения SameSite=Lax по умолчанию эти файлы cookie больше не будут отправляться.

Хороший способ проверить это - открыть создать новый сеанс инкогнито, так что вы можете быть уверены, что у вас установлены только новые файлы cookie, а затем посмотреть, получаете ли вы по-прежнему предупреждение, возможно, у вас просто есть старые файлы cookie в вашем текущем профиле. Однако предупреждение - это просто предупреждение, а не ошибка. Для совместимости со старыми браузерами сайты и службы могут продолжать устанавливать определенные файлы cookie без атрибута SameSite.

...