2013-02-17 2 views
2

Итак, я закончил связывание входа в facebook с помощью javascript sdk.GAE Python Javascript: как вставить данные ответа из входа в facebook в хранилище данных?

<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: '{{facebook_app_id}}', 
     channelUrl : '//localhost:8097/channel.html', 
     status: true, 
     cookie: true, 
     xfbml: true 
    }); 

    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
     // connected 
     alert(response.authResponse.userID); 
     FB.api('/me', function(response) { 
        var userInfo = document.getElementById('user-info'); 
        userInfo.innerHTML = '<img src="https://graph.facebook.com/' + response.id + '/picture" style="margin-right:5px"/>' + response.name; 
       alert(response.name); 
       document.getElementById('fb-root').appendChild(userInfo); 
       }); 
     } else if (response.status === 'not_authorized') { 
     // not_authorized 
     alert("not_authorized"); 
     } else { 
     // not_logged_in 
     alert("not_logged_in"); 
     } 
    }); 

    FB.Event.subscribe('{% if current_user %}auth.logout{% else %}auth.login{% endif %}', function(response) { 
     {% if current_user %} window.location = "/logout" {% else %} window.location.reload(); {% endif %} 
    }); 
    }; 
    (function() { 
    var e = document.createElement('script'); 
    e.type = 'text/javascript'; 
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
    e.async = true; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 

Так,

Как использовать JavaScript для передачи аргументов и вставить данные в хранилище данных надежно. Пример, Response.name. Также в facebook login. Я понимаю, что они используют токен для ответа на вход, и он также находится в хранилище данных python facebook. Однако я создал свою собственную систему входа, поэтому я не думаю, что мне нужно было использовать этот токен вообще. Есть ли риск не использовать этот токен?

ответ

2

Выполнение этого с использованием чистого JavaScript немного сложнее, но вы можете использовать jQuery и, более конкретно, jQuery.post. Таким образом, при наличии id и name вы могли бы просто послать эту информацию обратно в приложение, как это:

$.post("/login/facebook/", { id: response.id, name: response.name }) 
.done(function(data) { 
    alert("Data Loaded: " + data); 
}); 

На стороне серверной вы должны иметь обработчик, который будет ожидать такого рода вид запроса, чтобы войти на форум, что Пользователь facebook.

Единственная проблема, которую вы видите здесь, заключается в том, что любой может сделать этот запрос POST с любым ID и именем, и вы не знаете, действительно ли они на самом деле настоящие пользователи или просто пытаются попасть в вашу систему. Вот почему Facebook использует токен доступа, поэтому вы можете отправить его обратно на свой сервер, и с помощью token, App ID и App Secret вы сможете получить фактического пользователя.

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

Когда у нас была подобная ситуация, после некоторых исследований мы пришли к выводу об использовании Flask из-за Sessions и позже мы узнали, что подключение Facebook было не так сложно, используя расширение Flask-OAuth.

Вы можете найти полный пример, используя Flask, Sessions, Facebook Login и множество других вещей в одном из моих проектов с открытым исходным кодом под названием gae-init.