Android Facebook SDK 4.0 - Display username - android

I've been having a little trouble migrating to FB SDK's new version.
According to the documentation, this is how you fetch default user data:
GraphRequest request = GraphRequest.newMeRequest(
accessToken,
new GraphRequest.GraphJSONObjectCallback() {
#Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
// Application code
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link");
request.setParameters(parameters);
request.executeAsync();
And I believe that the data is contained withing the JSONObject.
However, I do not know how I can access and then use that user data.
Any help would be extremelly appreciated!
Thanks!

Now facebook sdk 4.0 doesnt return GraphUser it returns pure JSON object
While working around with my android app i found someof the tags. Check this
{"id":"10000700XXXXXXX","birthday":"XX\/XX\/XXXX","email":"xxxxxx#gmail.com","first_name":"xxx","gender":"male","last_name":"xxxxx","link":"http:\/\/www.facebook.com\/10000700XXXXXXX","location":{"id":"1064427060XXXXX","name":"XXXX, XXXXXXXXXXX"},"locale":"en_US","name":"XXX XXXXX","timezone":5.5,"updated_time":"2015-03-27T13:33:02+0000","verified":true}
*************************************
public void onCompleted(JSONObject user, GraphResponse response) {
String id = user.optString("id");
String firstName = user.optString("first_name");
String lastName = user.optString("last_name");
and so on...

Request is executing in another thread, so you cannot write this data in array or variable, that initialized not in this thread. Instead you can set this data in any view you need. All time, when you want to write data between different threads, after operation you will have null object. Good luck)

Related

How to fetch a public page's posts using facebook graph api?

Can I fetch all the posts data from a page with logged in user's access token ? or Is there any other way to retrieve all the posts data of a public page using Facebook Graph Api for Android ?
You will get facebook post data in json format that you can parse according to your requirement.
GraphRequest request = GraphRequest.newGraphPathRequest(
AccessToken.getAccessToken(),
"/YOUR_PAGE_ID/posts",
new GraphRequest.Callback() {
#Override
public void onCompleted(GraphResponse response) {
// Insert your code here
Log.d("raw response ",response.getRawResponse());
}
});
request.executeAsync();

Graph Request JSONObject object always returning null

I am very new to the Facebook development game so please bear with me. I followed the getting started guide on everything to setup the app ( at least I think).
I am trying to do a simple graph request to return info like name of my loggged in user. Below is my code. Everytime I run it the JsonObject returns null, which leads me to believe that I am not connecting. Are their trouble shooting consules or anything on facebooks developer site website that shows requests or that I am connected with the app?
GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
#Override
public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) {
if (jsonObject != null) {
JSONObject userProfile = new JSONObject();
Log.i("joe", "dosent appear to have returned nul...");
}
}
});
Please call setGraphPath() for it, something like that:
request.setGraphPath(Constants.YOUR_URL);
looks like your not requesting permissions. on your facebook login button do this:
fbLoginButton.setReadPermissions(Arrays.asList(
"public_profile", "email")); //for example

How can we see users’ information through Facebook Graph API in Android?

I am making a dating app (android) by using Facebook API (You know the similar application that starts with tin…)
Anyways, I registered my application in Facebook developers and I also got approval to use functions that I need through 'Submit Items for Approval'(my Approved Items: email, public_profile, User_photo, User_like, user_work_history, user_education_history )
So, I can log in from my app using my Facebook ID and I can also see users’ basic information too.
But! The main problem is that I cannot see photos (except public_profile) even though I was approved for this.
So I really need someone’s help. Please help me!
It will be great if you can review the code I used (To use when looking at users’ photos)
new Request(Session.getActiveSession(), "/{user-id}/albums", null, HttpMethod.GET, new Request.Callback() {
#Override
public void onCompleted(Response response) { }
}).executeAsync();
Hey Use the following code. It works perfectly for me.
GraphRequest request = GraphRequest.newMeRequest(
accessToken,
new GraphRequest.GraphJSONObjectCallback() {
#Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
// Application code
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "photos.limit(100)");
request.setParameters(parameters);
request.executeAsync();
Try the above code and you will get a jsonobject which can be used to get the image URLs. To know the response you get. Try Graph API explorer. The response format will be the same.
https://developers.facebook.com/tools/explorer
if you would like to get the photos of a user try the following code. Please note that you need the user-id to they photos
new Request(
session,
"/{user-id}/photos",
null,
HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
/* handle the result */
}
}
).executeAsync();
Please refer to https://developers.facebook.com/docs/graph-api/reference/user/photos/
You can use facebook graph api for accessing user info
GraphRequest request = GraphRequest.newMeRequest(
accessToken,
new GraphRequest.GraphJSONObjectCallback() {
#Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
// Application code
}
});
To call this method, use below line,
request.executeAsync();
For additional info visit facebook official documentation
https://developers.facebook.com/docs/android/graph

Create a Request in Facebook SDK 4 (Android)

As I understand, Facebook SDK v4 doesn't use the Session anymore, but I read in their Graph API document, the session is still used to create the Request
https://developers.facebook.com/docs/graph-api/using-graph-api/v2.3
/* make the API call */
new Request(
session,
"/me",
null,
HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
/* handle the result */
}
}
).executeAsync();
It's confusing me, and how can I get the session for Request? Any latest example to get the user profile data by using Facebook Graph API?
Any advice is appreciated.
On facebook developers' page is published a changelog and upgrade post. In your case this would be an option:
GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
#Override
public void onCompleted(JSONObject user, GraphResponse response) {
/* handle the result */
}
}).executeAsync();
By the way, they specify this:
By default a newMeRequest method fetches default fields from a user object. If you need any additional fields, or want to reduce the response payload for performance reasons, you can add a fields parameter and request specific fields.
For example:
GraphRequest request = GraphRequest.newMeRequest(
accessToken,
new GraphRequest.GraphJSONObjectCallback() {
#Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
// Application code
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link");
request.setParameters(parameters);
request.executeAsync();
I hope my answer helps you, being this one my first answer in stackoverflow. Greetings.
Reference: Facebook Android SDK Upgrading

Get Facebook friend list - Android

I am new in Facebook integration with android. I've logged in to Facebook by using facebook-android-SDK. Now I want to get all friends details and display in ListView. How can I do this?
Please help me
Thanks in advance
Go with following code to get frends list :
Bundle params = new Bundle();
params.putString("fields", "name, picture");
JSONObject jsonFrends = Util.parseJson(facebook.request("me/friends", params));
I would recommend following the tutorial on Fetching User Data and then instead of executing
...
if (state.isOpened()) {
userInfoTextView.setVisibility(View.VISIBLE);
// Request user data and show the results
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
#Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
// Display the parsed user info
userInfoTextView.setText(buildUserInfoDisplay(user));
}
}
});
}
...
use Request.executeMyFriendsRequestAsync which is part of the Request class.
EDIT: Which also has the advantage of using the Facebook Android SDK to parse the response.
You can do by this way :
Using the graph API: https://graph.facebook.com/me/friends?access_token="your access_token"

Categories

Resources