在PHP会话中存储Facebook个人资料图片URL

时间:2014-10-29 14:17:05

标签: php ajax facebook facebook-graph-api facebook-javascript-sdk

我正在使用facebook javascript SDK登录我的网站。单击登录按钮后,我将使用ajax将Facebook名称和个人资料图片URL发送到PHP并将名称存储在DataBase中,并将个人资料图片URL和名称分配给会话变量。当我将此会话变量传递到我的网站的个人资料页面时,我得到的Facebook名称正确,但个人资料图片网址已被破坏。我只得到一半的URL。 '&'旁边的一切URL中的符号丢失。这是我应该得到的原始网址。我通过在与登录屏幕相同的页面中显示图像来获得此功能

https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xap1/v/t1.0-1/p200x200/9444_10203017119044199_1059615267418985652_n.jpg?oh=5d5c541aa8c7c99d7c5bf5ce9ec2e718&oe=54E265CB&__gda__=1420508157_9882b31d641e2b27ef486c2ee7c61ad0

但我得到了这个

https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xap1/v/t1.0-1/p200x200/9444_10203017119044199_1059615267418985652_n.jpg?oh=5d5c541aa8c7c99d7c5bf5ce9ec2e718

因此,当通过ajax发送时,链接在中间某处被破坏。我哪里做错了?这是我的ajax和getPhoto函数

  function getUserInfo() {
  FB.api('/me', function(response) {

    var fbid = response.id;
    var fbname = response.name;
    var fbemail = response.email;
    var datastring = 'fbid1=' +fbid+ '&fbname1=' +fbname+ '&fbemail1=' +fbemail+ '&fbphoto1=' +fbphoto;
    $.ajax({
      type: "POST",
      url: "http://www.uniwink.com/landing/php_includes/fb_cred_store.php",
      data:datastring,
      cache:false,
      success: function(data){
       if(data == "success"){
        window.open("profile.php","_self");
      } else {
        window.open("index.php","_self");
      }
    }
  });
  });
}

function getPhoto()
{
  FB.api('/me/picture?type=large', function(response) {
    window.fbphoto = response.data.url;
  });

}`

1 个答案:

答案 0 :(得分:1)

使用encodeURIComponent编码fbphoto,然后在将值反映到浏览器时在PHP脚本中编译http://php.net/manual/en/function.urldecode.php

var datastring = 'fbid1=' +fbid+ '&fbname1=' +fbname+ '&fbemail1=' +fbemail+ '&fbphoto1=' +encodeURIComponent(fbphoto);

和PHP

$photourl = urldecode($photourl);
echo $photourl;