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