如何避免每次登录时都获得Facebook权限?

时间:2019-04-03 23:29:30

标签: javascript facebook vue.js login sdk

我正在为VueJS项目开发FB.login()功能,我希望通过作用域获得一些权限,但是,当我再次尝试登录后,它会不断询问我这种权限,好像我从未接受了他们,或者是要求。

我尝试通过参数设置它们,也将属性写为camelCase,到目前为止它们都没有起作用。

我的主要功能位于helper.js文件中:

export function loadFbSdk(appId, version, locale) {
  return new Promise(resolve => {
    window.fbAsyncInit = function () {
      FB.init({
        appId,
        xfbml: true,
        version,
        autoLogAppEvents: true
      });
      FB.AppEvents.logPageView();
      resolve('SDK Loaded!');
    };
    (function (d, s, id) {
      const fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) { return; }
      const js = d.createElement(s); js.id = id;
      js.src = 'https://connect.facebook.net/' + locale + '/sdk.js';
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
  });
}

export function getFbLoginStatus() {
  return new Promise(resolve => {
    window.FB.getLoginStatus(responseStatus => {
      resolve(responseStatus);
    });
  });
}

export function fbLogin() {
  const fbLoginOptions = {
    scope: 'pages_messaging,pages_messaging_subscriptions,email,pages_show_list,manage_pages',
    return_scopes: true,
    enable_profile_selector: true
  };

  return new Promise(resolve => {
    window.FB.login(response => resolve(response), fbLoginOptions);
  });
}

export function fbLogout() {
  return new Promise(resolve => {
    window.FB.logout(response => resolve(response));
  });
}

我的login.vue是:

<template>
  <div>
        <v-card>

          <v-card-actions class="vertical-buttons" row wrap align-center>
            <v-flex xs12 sm6 md6 lg4 mb-2 class="Aligner">
              <v-btn color="#4267B2" class="Aligner-item">
                <FacebookLogin
                  appId="585810894861537"
                  locale="es_LA"
                  loginLabel="Iniciar sesión con Facebook"
                  logoutLabel="Cerrar Sesión"
                  :isUpperCase="false"
                  @login="onSignInSuccess"
                  @logout="onLogout"
                  @sdk-loaded="sdkLoaded"
                  :loginOptions="fbSignInParams"
                ></FacebookLogin>
              </v-btn>
            </v-flex>

            </v-flex>
          </v-card-actions>
        </v-card>
  </div>
</template>

<script>
import FacebookLogin from "../facebook-addons/index.js";
import store from "@/store/store";
export default {
  name: "Login",
  components: {
    FacebookLogin
  },
  data() {
    return {
      FB: undefined,
      isConnected: false,
      fbSignInParams: {
        scope:
          "email, manage_pages, read_page_mailboxes, pages_messaging, pages_messaging_subscriptions",
        returnScopes: true

      }
    };
  },
  methods: {
    onSignInSuccess(response) {
      store.dispatch("yeekoLogin", response);
    },
    onSignInError(error) {},
    sdkLoaded(payload) {
      console.log(payload);
      this.isConnected = payload.isConnected;
      store.commit("setFB", payload.FB);
      if (this.isConnected) {
        this.onSignInSuccess();
      }
    },
    onLogout() {
      this.isConnected = false;
    }
  }
};
</script>

我希望登录名在每次单击时都不会要求获得相同的授予权限,而只是使用我的后端API。

0 个答案:

没有答案
相关问题