如何在统一引擎中从 Facebook API 获取用户名和用户个人资料图片?

Posted

技术标签:

【中文标题】如何在统一引擎中从 Facebook API 获取用户名和用户个人资料图片?【英文标题】:How to get Username and User Profile Picture from Facebook API in unity engine? 【发布时间】:2021-11-09 12:09:03 【问题描述】:

我想在我的统一游戏中实现用户登录,但我无法从他们的 Facebook id 获取用户个人资料图片。 显示的是用户名,但没有显示个人资料图片。它显示为空白。我也没有收到任何错误! 图像的精灵正在改变,但不显示在屏幕上。 代码如下:

void DealWithFbMenus(bool isLoggedIn)

    if (isLoggedIn)
    
        FB.API("/me?fields=first_name", HttpMethod.GET, DisplayUsername);
        FB.API("/me/picture?type=med", HttpMethod.GET, DisplayProfilePic);
    


void DisplayUsername(IResult result)

    if (result.Error == null)
    
        string name = "" + result.ResultDictionary["first_name"];
        FB_userName.text = name;
        Debug.Log("" + name);
    
    else
    
        Debug.Log(result.Error);
    


void DisplayProfilePic(IGraphResult result)

    if (result.Error == null)
    
        Debug.Log("Profile Pic");
        FB_userDp.sprite = Sprite.Create(result.Texture, new Rect(0, 0, 128, 128), new Vector2());
    
    else
    
        Debug.Log(result.Error);
    

【问题讨论】:

【参考方案1】:

Sprite.Create 拍摄

rect 纹理的矩形部分用于精灵。

我怀疑您的硬编码 128 x 128 像素只是一个部分,而不是整个纹理,具体取决于图片的实际图像尺寸。

这也需要

pivot Sprite 相对于其图形矩形的轴心点。

您使用的是new Vector2(),表示左下角。一般来说,对于个人资料图片,我宁愿假设枢轴应该是纹理的中心并使用

Vector2.one * 0.5f

new Vector2(0.5f, 0.5f)

因此,假设下载本身确实有效,并且正如您所说的那样您没有收到错误,您可能宁愿使用例如

FB_userDp.sprite = Sprite.Create(result.Texture, new Rect(0, 0, result.Texture.width, result.Texture.height), Vector2.one * 0.5f);

或者如果您的目标是使用方形截面,无论您可以使用何种尺寸

var size = Mathf.Min(result.Texture.width, result.Texture.height);
FB_userDp.sprite = Sprite.Create(result.Texture, new Rect(0, 0, size, size), Vector2.one * 0.5f);

【讨论】:

成功了!也谢谢你的解释。

以上是关于如何在统一引擎中从 Facebook API 获取用户名和用户个人资料图片?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios 中从 facebook 获取朋友的最新状态?

如何在 C# 中从 Facebook SDK 获取当前用户访问令牌?不是应用访问令牌

如何在 iOS 9 fb sdk 4.8 或更高版本中从 facebook 获取好友列表?

我无法在 iOS 中从 Facebook 获取用户数据

在 iOS 中从 Facebook 获取个人资料照片

在 magento 中从购物车中获取没有统一费率的总计