Facebook个人资料图片未显示,它显示问号的图标

时间:2012-10-09 05:55:15

标签: facebook facebook-graph-api unity3d prime31

你知道吗?我正在使用Unity IDE和C#开发一个应用程序。此外,我正在使用社交网络prime31为我的插件与Facebook。我能够获取所有图表并将其显示在我的屏幕应用程序中,但自上周以来它没有显示个人资料图片和我朋友的图片,它只是显示一个简单的问号。你对此有什么想法吗?

但我能够显示用户名和我朋友的用户名。我的应用令牌正在运行,我正在使用JSON数据从Facebook网址获取数据。

void Start()
{
    getFB_ID();
}

void getFB_ID()
{
    Facebook.instance.graphRequest( "me/", HTTPVerb.GET, ( error, obj ) =>
    {

        var ht = obj as Hashtable;
        userId = ht["id"].ToString();

        Debug.Log( "USER ID: " + userId);

        string url = "http://graph.facebook.com/"+userId+"?fields=id,name,picture";
        StartCoroutine(getURL(url));

     });

}

IEnumerator getURL(string url) 
{

    WWW www = new WWW(url);
    yield return www;
    Debug.Log ("Heres the URL you are accessing:  " + url);

    ProfilePicDisplay(www.text);


public void ProfilePicDisplay(string jsonString)
{
        JsonData jsonProfilePic = JsonMapper.ToObject(jsonString);
        ConverterScript fbprofilepic;

        MyPicture = new ArrayList();

    {
        fbprofilepic = new ConverterScript();
        fbprofilepic.name = jsonProfilePic["name"].ToString();
        fbprofilepic.picture = jsonProfilePic["picture"].ToString();

        LoadProfilePic(fbprofilepic);

        MyPicture.Add(fbprofilepic.name);
    }

}

private void LoadProfilePic(ConverterScript profile)
{
    string ProfilePic = "userAvatar";
    GameObject profile_pic_holder = GameObject.Find(ProfilePic);
    profile_pic_holder.SendMessage("LoadImage", profile);
}

能够在我的日志中获取数据,但问题是它没有加载图像,它说:

您正在尝试从www流加载数据,下载时出现以下错误。 无法解析主机:JsonData对象(未找到域名)

3 个答案:

答案 0 :(得分:0)

截至上周,10月3日,详情请见https://developers.facebook.com/blog/post/2012/10/03/platform-updates--operation-developer-love/

图片端点不再返回字符串中的图片URL。它返回一个字典,你必须改变你的解析才能到达它。所以返回的数据看起来更像是这样:

{
  "id": "1234567", 
  "name": "Your Name", 
  "picture": {
    "data": {
      "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/your_picture.jpg", 
      "is_silhouette": false
    }
  }
}

答案 1 :(得分:0)

在最新的LeanLoader中,有一个自动修复新提到的Facebook端点abernathy,它允许您直接加载图像(所有解析的json和引擎处理的其他数据) 。您可以轻松加载这样的个人资料图片:

function Start () {
    LeanLoader.load("https://graph.facebook.com/DentedPixel/picture?type=large&redirect=false", LLOptions().setOnLoad(onImageLoaded));
}

private function onImageLoaded( tex:Texture2D ){
    Debug.Log("Your image texture ready to use! :"+tex);
}

我认为人们会发现许多其他功能LeanLoader(包括缓存图像/文本/声音和内置JSON解析器)。

答案 2 :(得分:0)

试试这个 - fb sdk version-9.1.0

FB.API("/me/picture?type=large", HttpMethod.GET, DisplayProfilePic);// API调用

void DisplayProfilePic(IGraphResult result)

{
    Image profilePic;
    if (result.Texture != null)
    {
        profilePic = image1; // diplaying image
        profilePic.sprite = Sprite.Create(result.Texture, new Rect(0, 0, result.Texture.width, result.Texture.height), new Vector2());
    }
}