Я пытаюсь добавить логин 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.