Facebook SDK v4 + Parse 1.7.5 issue - ios

I've updated my SDKs from Facebook and Parse to the newest ones which includes some change in the PFFacebookUtils structure.
I would like to create a PFUser with some content from FB. It have been working for a long time before the update, but now when I log in, I only receive the user's name and FBID as result from the Facebook request.
This is how "I" log in:
NSArray *permissionsArray = #[#"public_profile", #"email", #"user_education_history", #"user_work_history", #"user_birthday", #"user_friends", #"user_photos"];
[PFFacebookUtils logInInBackgroundWithReadPermissions:permissionsArray block:^(PFUser *user, NSError *error) { ... }];
This is how I try to get the results:
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:#"me" parameters:nil];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
NSLog(#"Result %#", result);
...
}];
The log only shows this:
2015-08-03 01:41:15.039 XXXXXX[10807:2640469] Result {
id = 1015XXXXXXXXXXXX;
name = "Simon XXXX";
}
The Facebook App ID is set in the pList.

The latest Facebook SDK uses the Graph API v2.4, so the special me request needs the specific fields as query parameters to the graph path.
So, if you need to access the first, last name and email, the graph path in your code would look something like this:
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:#"me?fields=first_name,last_name,email" parameters:nil];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
NSLog(#"Result %#", result);
...
}];
I also suggest that you check out and play with the Graph API Explorer (note the API version dropdown in the top right corner).

Related

Facebook SDK on iOS Graph How to return video list

I have a graph request like:
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:#"/me/albums"
parameters:#{#"fields": #"id, name, picture, count"}
HTTPMethod:#"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result,
NSError *error) {
with these permissions:
self.but_FacebookConnect.readPermissions = #[#"public_profile", #"email", #"user_photos", #"user_videos"];
All my albums are there except for videos.
If I do a request on Facebook Graph API tool with /me/videos it also gives me a empty data[].
I tried with another account that has lots of videos... and this request /{user-id}/videos returned just one video.
Does anyone know if I'm missing something here?
the endpoint to receive the video list was /me/videos/uploaded

iOS :Unable to get Facebook profile public data as media (Images & video)

I integrated FB account in my iOS mobile Application and it's approved by FB, But when any user logged in with FB login then only basic details coming successfully but unable to get the logged in User's media (Images/Video which uploaded by him as public)
I already mentioned the permission
"let facebookReadPermissions = ["public_profile","email","user_birthday","user_photos","user_videos"]"
Also i logged out from mobile safari and did fresh login but no luck.
After long search i am not able to fix this issue, Please help me.
You can try the Facebook Graph API. Check the code given below....
// For more complex open graph stories, use `FBSDKShareAPI`
// with `FBSDKShareOpenGraphContent`
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:#"/me/feed"
parameters:params
HTTPMethod:#"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result,
NSError *error) {
// Handle the result
}];
If you are taking the permission in FB login than for getting the data you should use this code after successful login to FB.
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:#"/me"
parameters:#{ #"fields": #"id,name,photos,videos,email,picture,birthday",}
HTTPMethod:#"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
// Insert your code here
}];

How to get user's albums id using facebook sdk in iOS

I m using Facebook SDK version 4.16 and working on iOS 9.3
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:[NSString stringWithFormat:#"/%#/albums",[result objectForKey:#"id"]]
parameters:#{#"fields":#"albums"}
HTTPMethod:#"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result,
NSError *error) {
if (!error) {
NSLog(#"%#",result); // got success message
}
}];
I did set "user_photos" in permission at the time of user Facebook login.
In above code [result objectForKey:#"id"] this line gives Facebook user id.
but this code returns me an empty array for key data hence i am not getting album id and other details.

how to get fb friends list using Facebook iOS sdk 4.2

I'm trying to find out all Facebook friends list by using the Facebook iOS sdk 4.2.
my code is
NSDictionary *param=[NSDictionary dictionaryWithObjectsAndKeys:#"picture.width(1000).height(1000),
name,
link",
#"fields",
nil];
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:#"me/friends"
parameters:param
HTTPMethod:#"GET"];
[request startWithCompletionHandler : ^(FBSDKGraphRequestConnection
*connection,
id result,
NSError *error) {
NSLog(#"facebook friends :%#",result); // Handle the result
}];

ios facebook sdk get and display username

I have been working with the facebook sdk and parse and I am trying to retrieve a users facebook name but the documentation doesn't give me sufficient help and most tutorials on the net are out dated.
Can anyone tell how I can get a users name from the facebook sdk to display as a text label ? This would be greatly appreciated thanks.
You need to implement following FBLoginViewDelegate
- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user
{
NSLog(#"user is %# %#", [user objectForKey:#"email"], user.name);
}
You can retrieve it in this way:
FBRequest *request = [[FBRequest alloc] initWithSession:FBSession.activeSession graphPath:#"me"];
[request startWithCompletionHandler: ^(FBRequestConnection *connection,
NSDictionary < FBGraphUser > *my,
NSError *error)
{
NSString *username = my[#"username"];
}
I finally figured it out, you have to request the current users profile information than set your label with a "key" which in this case is called "name"
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:#"me"
parameters:nil];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
NSLog(#"fetched user:%#", result);
_usernameText.text = result[#"name"];
}];

Resources