unity tools google developers desarrolladores android unity3d facebook-unity-sdk

android - tools - ¿Cómo obtener la imagen de perfil del usuario con Unity SDK de Facebook?



google login unity (4)

Lo arreglé con esto-

WWW url = new WWW("https" + "://graph.facebook.com/" + userId + "/picture?type=large"); //+ "?access_token=" + FB.AccessToken); Texture2D textFb2 = new Texture2D(128, 128, TextureFormat.DXT1, false); //TextureFormat must be DXT5 yield return url; profilePic.renderer.material.mainTexture = textFb2; url.LoadImageIntoTexture(textFb2); Debug.Log("Working");

Estoy tratando de obtener la foto de perfil del usuario del juego usando this-

void MyPictureCallback(FBResult result) // store user profile pic { if (FB.IsLoggedIn) { WWW url = new WWW("http" + "://graph.facebook.com/" + FB.UserId + "/picture"); Texture2D textFb2 = new Texture2D(128, 128, TextureFormat.ARGB32, false); //TextureFormat must be DXT5 url.LoadImageIntoTexture(textFb2); profilePic.renderer.material.mainTexture = textFb2; }

Pero no está funcionando. No recibo errores


La respuesta de Jason Pietka está bien, pero un poco vieja. Hoy nos FB.API :

FB.API("me/picture?type=med", Facebook.HttpMethod.GET, GetPicture);

GetPicture es un método de devolución de llamada por lo que:

private void GetPicture(FBResult result) { if (result.Error == null) { Image img = UIFBProfilePic.GetComponent<Image>(); img.sprite = Sprite.Create(result.Texture, new Rect(0,0, 128, 128), new Vector2()); } }


De alguna forma obtuve el resultado. La textura siempre fue nula.

así que he usado el código de https://github.com/fbsamples/friendsmash-unity

incluso este código tiene algunos problemas si compilas directamente ...

LoadPictureAPI (Util.GetPictureURL ("me", 100, 100), MyPictureCallback);

delegate void LoadPictureCallback (Texture texture); IEnumerator LoadPictureEnumerator(string url, LoadPictureCallback callback) { WWW www = new WWW(url); yield return www; callback(www.texture); } void LoadPictureAPI (string url, LoadPictureCallback callback) { FB.API(url,Facebook.HttpMethod.GET,result => { if (result.Error != null) { Util.LogError(result.Error); return; } var imageUrl = Util.DeserializePictureURLString(result.Text); StartCoroutine(LoadPictureEnumerator(imageUrl,callback)); }); } void LoadPictureURL (string url, LoadPictureCallback callback) { StartCoroutine(LoadPictureEnumerator(url,callback)); } void MyPictureCallback(Texture texture) { Util.Log("MyPictureCallback"); Image im = GetComponent <Image>(); if (texture == null) { LoadPictureAPI(Util.GetPictureURL("me", 100, 100),MyPictureCallback); return; } Vector2 v = new Vector2 (0, 0); Rect r = new Rect (0f,0f,100f,100f); im.sprite = Sprite.Create((Texture2D)texture, r, v); }


Con Facebook SDK 7.2.2, esto funciona bien si quiere / necesita una imagen cuadrada de un tamaño particular. Lea más aquí en Facebook: https://developers.facebook.com/docs/graph-api/reference/user/picture/

public Image ProfilePicture; FB.API("me/picture?type=square&height=128&width=128", HttpMethod.GET, FbGetPicture); private void FbGetPicture(IGraphResult result) { if (result.Texture != null) ProfilePicture.sprite = Sprite.Create(result.Texture, new Rect(0, 0, 128, 128), new Vector2()); }