How To Get User Name From Facebook Unity SDK - facebook

I am new in unity and trying to integrate Facebook unity SDK. But i am not able to find current logged-in user name. It will return only userId and accessToken. How to get login name after FB.Login("email")

After you login, you can get the name with:
FB.API("me?fields=name", Facebook.HttpMethod.GET, <your callback here>);

After calling the API
FB.API("me?fields=name", Facebook.HttpMethod.GET, NameCallBack);
get the exact name from the JSON like this:
void NameCallBack(FBResult result)
{
IDictionary dict = Facebook.MiniJSON.Json.Deserialize(result.Text) as IDictionary;
string fbname = dict["name"].ToString();
}

My best guess if I was to look somewhere is to make use of that userId and FQL to query Facebook for the name of the user.
For instance using the Graph API Explorer:
https://developers.facebook.com/tools/explorer
I used the following query:
Select name from user where uid = [userId]
It returned the following JSON string:
{
"data": [
{
"name": "myName"
}
]
}
I think you can use https://developers.facebook.com/docs/php/howto/profilewithfql/ to get an idea of how to query the FB.API to perform a FQL query.
FQL Guide: https://developers.facebook.com/docs/technical-guides/fql/

Related

Facebook api graph all photos giving empty array

I'm trying to get all photos from my facebook pefil but all i got is a empty array data or only the perfil photo, i think that with could be my passport facebook error but with the facebook api im geting empty array too,
i try this,
https://graph.facebook.com/USERID/photos?access_token=USERTOKEN
i dont know what i'm doing wrong, i tried with photo type uploaded and doesn't work too, i just wanna all perfil photos.
reponse:
{
"data": []
}
If you are still receiving an empty array after obtaining the user_photos permission, try adding type=uploaded (options are uploaded or tagged), e.g.: /me/photos?fields=images&type=uploaded&access_token=...) or in the JS SDK:
FB.api("/me/photos", { fields: "images", type: "uploaded" }, (resp) => { console.log(resp) });
(Note you can always pass "me" instead of a user ID to get info for the current user)

Missing Photos from Timeline Photos album

I'm using Facebook Graph API to get all the photos of a user graphPath: me/albums and find something weird with Timeline Photos album.
Photos exist in Timeline album on Facebook, but not returned from API call graphPath/{timeline_photos_album_id}/photos, or they are returned with lower number of photos.
What is the problem?
Logs:
Calling for albums graphPath: me/albums:
.....
{
"can_upload" = 0;
count = 3; !!!!!!!!!!!
"created_time" = "2013-06-18T10:43:27+0000";
description = cool;
from = {
id = 100006100533891;
name = "Mike Mike";
};
id = 1387760311437307;
link = "https://www.facebook.com/album.php?
fbid=1387760311437307&id=100006100533891&aid=1073741829";
name = "Timeline Photos";
privacy = everyone;
type = wall;
"updated_time" = "2013-06-18T10:47:53+0000”;
},
.....
Calling for album photos graphPath/{timeline_photos_album_id}/photos:
{
data = (
);
}
Unfortunately "it is not a bug, it is by design".
I tried the following (with "user_photos" permission) and it works:
Fetch the album photo count for my user:
https://graph.facebook.com/me/albums?fields=id,count&access_token={access_token}
The result is
{
"data": [
{
"id": "{album_id}",
"count": 161,
"created_time": "2010-11-05T15:41:42+0000"
},
....
}
Then query for the photos of this album:
https://graph.facebook.com/{album_id}/photos?fields=id&limit=500&access_token={access_token}
The result is
{
"data": [
{
"id": "{photo_id1}",
"created_time": "2013-12-29T09:59:52+0000"
},
{
"id": "{photo_id2}",
"created_time": "2013-12-17T10:40:26+0000"
},
...
}
I count the correct number of 161 ids in the result. So everything seems to work fine.
You can also test this via FQL:
https://graph.facebook.com/fql?q=select+pid+from+photo+where+album_object_id+=+{album_id}+limit+1000&access_token={access_token}
there have been changes in the FB API recently, did you try to add the fields you want to get back in the result from the API? In the past, API always returned "standard fields", newest you always have to provide a list of fields of what you want to have back in the result such as ....fields=name,id...
I think you are missing the user_photos permission in the Access Token. The end point:
/{timeline_photos_album_id}/photos is working perfectly fine for me when I tried it using the Graph API Explorer to retrieve photos from my Timeline photos album. And, I don't think that it is necessary to provide the fields.
I'll suggest you should try the same using the Graph API Explorer. Just press the Get Access Token button on the top right and check the user_photos permission to test your request.
In case you are getting lesser results, you can try your query using pagination options limit and offset. This sometimes returns more results as compare to normal(nothing about this on docs, just my personal experience). Something like:
{timeline_photo_album_id}/photos?limit=500&offset=0
But again, as you pointed out, there are strange things going on with the API. Take a look at this article. This article refers to it as an expected behavior of the API!

FaceBook API for friends count

There is the question about fetching count of user friends via FaceBook API.
I want to get the number of friends only have USER_ID of the any facebook user. As I know I can get it using FQL like:
SELECT friend_count FROM user WHERE uid = X
But for some users this value is null or there is no value. Please advice is there another way to get this value?
That user might be keeping that information private. In that case, you cannot fetch that information.
You just check the following link. You need to generate token (by clicking on Get Token you will get it) with data you want from facebook API, need to select friends option to get the friend count.
https://developers.facebook.com/tools/explorer/?method=GET&path=me%3Ffields%3Did%2Cname%2Cfriends&version=v2.8
FB.api(
'/me',
'GET',
{"fields":"id,name,friends,link,email,gender,picture,first_name,last_name,cover"},
function(response) {
// Insert your code here
}
);
after executing this you will get this in response as
{
"id": "XXXXXXXXXX",
"name": "Test test",
"friends": {
"data": [
],
"summary": {
"total_count": 14
}
}
}
total_count will be your friend count

Fql page liked returns empty array

Im using this query and for some users it returns correct response but for some it returns empty array. I am only changing userId. Is it because of some privacy settings ?
SELECT uid FROM page_fan WHERE page_id = pageId and uid = userId
For some users it returns a good response:
{
"data": [
{
"uid": userId
}
]
}
and for some it returns a bad response like this even if they liked the page:
{
"data": [
]
}
Im using extended permissions read_stream
I updated my permissions with user_likes and uninstalled application and it works just fine.

How can I filter the news feed by type=status, using the Graph API of Facebook's home?

The Graph API of Facebook's home:
Request:
https://graph.facebook.com/me/home?access_token=.....
JSON response:
{
"data":[
{
"type":"status",
"id":"100003063094116_114168602028576",
"created_time":"2011-11-07T16:28:44+0000"
},
{
"type":"link",
"id":"100003063094116_114172085361561",
"created_time":"2011-11-07T16:27:44+0000"
}
],
"paging":{
"previous":"https://graph.facebook.com/me/home?fields=type&limit=2&access_token=....&since=1320683324",
"next":"https://graph.facebook.com/me/home?fields=type&limit=2&access_token=....&until=1320683263"
}
}
How can I can filter the news feed of "type"="status"?
You may try FQL query instead:
SELECT status_id, time, source, message FROM status WHERE uid = me()
me() may be replaced by any other facebook user ID
and may be tested here