Reputation: 27
Hello I neeed to retrieve User Name and notifications from a facebook profile, this is my facebook conector code:
import com.FeedPass.SessionEvents.AuthListener;
import com.FeedPass.SessionEvents.LogoutListener;
public class FacebookConnector {
private Facebook facebook = null;
private Context context;
private String[] permissions;
private Handler mHandler;
private Activity activity;
private SessionListener mSessionListener = new SessionListener();
private String _accessToken;
public FacebookConnector(String appId,Activity activity,Context context,String[] permissions){
this.facebook = new Facebook(appId);
SessionStore.restore(facebook, context);
SessionEvents.addAuthListener(mSessionListener);
SessionEvents.addLogoutListener(mSessionListener);
this.context=context;
this.permissions=permissions;
this.mHandler = new Handler();
this.activity=activity;
}
public void login() {
if (!facebook.isSessionValid()) {
facebook.authorize(this.activity, this.permissions,new LoginDialogListener());
}
}
public void logout() {
SessionEvents.onLogoutBegin();
AsyncFacebookRunner asyncRunner = new AsyncFacebookRunner(this.facebook);
asyncRunner.logout(this.context, new LogoutRequestListener());
}
public void postMessageOnWall(String msg) {
if (facebook.isSessionValid()) {
Bundle parameters = new Bundle();
parameters.putString("message", msg);
try {
String response = facebook.request("me/feed", parameters,"POST");
System.out.println(response);
} catch (IOException e) {
e.printStackTrace();
}
} else {
login();
}
}
public String getNotifications(){
String result = null;
if(facebook.isSessionValid()){
Bundle bundle = new Bundle();
bundle.putString(Facebook.TOKEN, _accessToken);
try{
result = facebook.request("me/notifications", bundle, "GET");
}
catch(IOException e){
e.printStackTrace();
}
}
else{
login();
}
return result;
}
private final class LoginDialogListener implements DialogListener {
public void onComplete(Bundle values) {
SessionEvents.onLoginSuccess();
}
public void onFacebookError(FacebookError error) {
SessionEvents.onLoginError(error.getMessage());
}
public void onError(DialogError error) {
SessionEvents.onLoginError(error.getMessage());
}
public void onCancel() {
SessionEvents.onLoginError("Action Canceled");
}
}
public class LogoutRequestListener extends BaseRequestListener {
public void onComplete(String response, final Object state) {
// callback should be run in the original thread,
// not the background thread
mHandler.post(new Runnable() {
public void run() {
SessionEvents.onLogoutFinish();
}
});
}
}
private class SessionListener implements AuthListener, LogoutListener {
public void onAuthSucceed() {
SessionStore.save(facebook, context);
}
public void onAuthFail(String error) {
}
public void onLogoutBegin() {
}
public void onLogoutFinish() {
SessionStore.clear(context);
}
}
public Facebook getFacebook() {
return this.facebook;
}
}
as you can see I have a method to retrieve user notifications but I'm not sure it is working, anyone know how to do this is in a simple manner?
Upvotes: 0
Views: 1153
Reputation: 551
This is how you retrieve notifications.Even this is an old question. I will post it in case somebody finds it helpful
private void onSessionStateChange(Session session, SessionState state, Exception exception) {
if (state.isOpened()) {
InboxMessage.setVisibility(View.VISIBLE);
new Request(session,"/me/notifications", null,HttpMethod.GET,new Request.Callback() {
public void onCompleted(Response response) {
GraphObject object = response.getGraphObject();
if (object != null) {
InboxMessage.setText(object.getProperty("data").toString());
} else {
InboxMessage.setText("Notifications returns null");
}
}
}
).executeAsync();
} else {
InboxMessage.setVisibility(View.INVISIBLE);
Log.i(TAG, "Logged out...");
}
}
Upvotes: 0
Reputation: 22493
You can get facebook user name from this
String User_name = null;
try {
User_name = new JSONObject(facebook.request("username"));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Upvotes: 1
Reputation: 9599
The following code you can use to retrieve the name of the facebook user:
public static String getName() {
String response;
String name = "";
try {
response = ParseFacebookUtils.getFacebook().request("me");
JSONObject json = Util.parseJson(response);
name = json.getString("first_name");
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
catch (FacebookError e) {
e.printStackTrace();
}
catch (JSONException e) {
e.printStackTrace();
}
return name;
}
Upvotes: 1