Вход в Facebook открыт в той же вкладке, а не во всплывающем окне - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь добавить логин Facebook в свое приложение.Я использую Facebook SDK сейчас с всплывающими окнами.Но теперь я хочу изменить это, чтобы войти через страницу входа в Facebook, открытую в той же вкладке.Я пытался найти ответы в Facebook для разработчиков DOSC, но я не получил его.Я совершенно новый в JavaScript и vue.js.Я использую в основном Python, но теперь я должен найти ответ.Я знаю, что мне нужно создать href следующим образом:

window.location.href = 'https://www.facebook.com/v3.1/dialog/oauth?client_id='+app_id_fb+'&redirect_uri='+redirect_uri_fb+'&state='+state_param_fb

Но я не знаю, где добавить это, чтобы изменить мой всплывающий логин.мой файл social-login.js:

function login_redirect(login_data){
    var form = document.createElement("form");
    form.setAttribute("method", 'POST');
    form.setAttribute("action", process_social_login_link);

    for(var key in login_data) {
        if(login_data.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", login_data[key]);

            form.appendChild(hiddenField);
         }
    }
    document.body.appendChild(form);
    form.submit();
}

function fb_login(){
    FB.getLoginStatus(function(response) {
        if (response.authResponse) {
            fb_login_redirect({access_token: response.authResponse.accessToken,
                u_id: response.authResponse.userID});
        } else {
            fb_do_login();
        }
    });
}

window.fbAsyncInit = function() {
    FB.init({
      appId      : fb_app_id,
      status     : true, // Check login status
      cookie     : true,
      xfbml      : true,
      version    : 'v3.1'
      // version    : 'v2.8'
    });

    FB.AppEvents.logPageView();

  };

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/pl_PL/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));

facebook.py

class FacebookProvider(BaseProvider):

    graph_url = 'https://graph.facebook.com/%s'
    graph_url_oauth = graph_url % 'oauth/%s'
    client_id = 'xxxx'
    client_secret = 'yyy'
    access_token = None
    app_access_token = None

    def verify_access_token(self, access_token, **kwargs):

        grant_type = 'client_credentials'
        try:
            response = requests.get(self.graph_url_oauth % 'access_token',
                                    params={'client_id': self.client_id,
                                            'client_secret': self.client_secret,
                                            'grant_type': grant_type})
        except Exception as err:
            raise SocialAuthenticationError('Error while connecting to oauth')

        app_access_token = response.json().get('access_token')

        if app_access_token is None:
            raise SocialAuthenticationError('Error while getting app access token')
        else:
            self.app_access_token = app_access_token

        try:
            response = requests.get(self.graph_url % 'debug_token', params={'input_token': access_token,
                                                                            'access_token': app_access_token})
        except Exception as err:
            print(err)
            raise SocialAuthenticationError('Error in request: ' + err)

        response_data = response.json()
        if response_data.get('data') is None:
            raise SocialAuthenticationError('error while getting token debug')

        if response_data['data'].get('app_id') != self.client_id:
            raise SocialAuthenticationError('invalid token (app_id)')

        self.access_token = access_token

        return True

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...