【问题标题】:Facebook profile picture doesnt show up, it shows an icon of a question markFacebook个人资料图片不显示,它显示一个问号图标
【发布时间】:2012-10-09 05:55:14
【问题描述】:

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

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

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 对象(未找到域名)

【问题讨论】:

  • 请提供一些代码。提供帮助要容易得多。
  • 抱歉,我的帖子已经编辑过了
  • 请不要误用统一标签,因为它是由 Microsoft Unity 保留的。

标签: facebook facebook-graph-api unity3d prime31


【解决方案1】:

截至上周,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
    }
  }
}

【讨论】:

  • 嗨 abernathy!谢谢你的回复,你的意思是说 facebook 已经改变了它的 JSON 数据?我需要在我的代码中改变什么?我怎样才能得到正确的字典来获取图片?这是我的代码:fbprofilepic.picture = jsonProfilePic["picture"].ToString(); ----> 我是否需要添加或编辑类似这样的内容:fbprofilepic.picture = jsonProfilePic["picture"]["data"]["url"].ToString(); ----> 这个试过了,但是没用。
  • 是的,您应该尝试通过 data->url 遍历 JSON 对象
  • 嗨 abernathy 感谢它现在的工作,太棒了,非常感谢
【解决方案2】:

在最新的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 解析器)。

【讨论】:

    【解决方案3】:

    试试这个-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());
        }
    }
    

    【讨论】:

    • 这个问题在 8 年前就已经解决了,目前还不清楚你的回答对这个话题有什么价值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多