如何在统一引擎中从 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 获取当前用户访问令牌?不是应用访问令牌