作者:
来源: 最近为客户做一个新的Facebook APP页面.说一下如何获取Facebook用户的信息,例如facebookID,name,pic_square,movies,email,current_location等信息.在使用APP之前需要先生成Facebook APP ID 这不必多说.生成Facebook APP ID之后 在javascript中 初始化Facebook信息而且我定义了一些我需要获取获取数据的全局变量- <script language="javascript" type="text/javascript">
- //这是我们要获取的信息变量
- var facebookId;
- var facebookName;
- var facebookProfileImg;
- var facebookBooks;
- var facebookMovies;
- var facebookMusic;
- var facebookLocations;
- var friendFbIds = '';
- var facebookEmail;
- FB.init({
- appId: '138343092941586', //这里设置你申请的APP ID
- status: true,
- cookie: true,
- xfbml: true,
- oauth: true
- });
- </script>
初始化完成之后,可以通过某一个事件来触发获取Facebook信息的功能.(我使用了id的点击事件)
- <script language="javascript" type="text/javascript">
- $('#invite').click(function(){
- FB.getLoginStatus(checkResponse);
- });
- //checkResponse方法是用来检测当前用户是否登陆的.
- function checkResponse(response) {
- if (!response.authResponse) {
- //scope是获取权限的意思,你可以获取其他的例如:offline_access, publish_stream等权限
- FB.login(handleSessionResponse,{ scope:'email'});
- } else {
- //这个方法就是获取Facebook用户信息的方法
- retrieveProfiles();
- }
- }
- //次方法是用来处理Facebook登陆的回话相应.
- function handleSessionResponse(response) {
- if (!response.authResponse) {
- return;
- } else {
- //这个方法就是获取Facebook用户信息的方法
- retrieveProfiles();
- }
- }
- </script>
下面这里才是重点,根据上面获取的Facebook信息,通过FacebookAPI查询Facebook的数据库即可得到相关的信息
- <script language="javascript" type="text/javascript">
- //用来循环获取Facebook 好友ID
- Object.size = function(obj) {
- var size = 0;
- for (var key in obj) {
- if (obj.hasOwnProperty(key)) size++;
- }
- return size;
- }
- function retrieveProfiles() {
- // 通过Facebook API 查询用户信息
- FB.api({ method: 'fql.query', query: 'SELECT uid,email, name, pic_square, books, movies, music, current_location FROM user WHERE uid=me()' }, function(response) {
- // fetch the status from response
- var user = response[0];
- if (user == undefined) {
- $('span.loading').replaceWith('<span>Sorry, please try again.</span>');
- } else {
- facebookId = user.uid;
- facebookName = user.name;
- facebookProfileImg = user.pic_square;
- facebookMovies = user.movies;
- facebookMusic = user.music;
- facebookBooks = user.books;
- facebookEmail = user.email;
- facebookLocations = user.current_location;
- //获取当前用户的Facebook好友
- FB.api({ method: 'fql.query', query: 'SELECT uid2 FROM friend WHERE uid1 = ' + facebookId }, function(data) {
- console.log(data);
- //注意这里用到了Object.size方法
- for (var i = 0; i < Object.size(data); i++) {
- friendFbIds = friendFbIds + "'" + data[i].uid2 + "'";
- if (i != Object.size(data) - 1) {
- friendFbIds += ',';
- }
- }
- console.log(friendFbIds);
- console.log("facebookName"+facebookName);
- console.log("facebookEmail"+facebookEmail);
- console.log("facebookProfileImg"+user.pic_square);
- console.log("facebookMovies"+user.movies);
- console.log("facebookMusic"+user.music);
- console.log("facebookBooks"+user.books);
- console.log("facebookLocations"+user.current_location);
- });
- }
- });
- }
- </script>
这样用户的信息就已经取得了,大家也可以在Facebook的APP 帮助文档查找相关用户信息字段