Skip to content

Instantly share code, notes, and snippets.

@ppamorim
Last active September 9, 2015 13:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ppamorim/3cd0a141aac5d52bd60e to your computer and use it in GitHub Desktop.
Save ppamorim/3cd0a141aac5d52bd60e to your computer and use it in GitHub Desktop.
package com.happyapp.utils;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import java.security.Permission;
import java.util.ArrayList;
import org.json.JSONObject;
public class Facebook {
private CallbackManager callbackManager;
private Callback callback;
private ContextCallback contextCallback;
private LoginResult authResult;
public Facebook() {
this.callbackManager = CallbackManager.Factory.create();
}
public CallbackManager getCallbackManager() {
return callbackManager;
}
public void authorize(Callback callbackk, ContextCallback contextCallbackk) {
try {
DebugUtil.log("AUTHORIZE");
this.callback = callbackk;
this.contextCallback = contextCallbackk;
LoginManager loginManager = LoginManager.getInstance();
loginManager.registerCallback(callbackManager, authorizeCallback);
ArrayList<String> strings = new ArrayList<>();
strings.add("public_profile");
strings.add("email");
loginManager.logInWithReadPermissions(contextCallback.getActivity(), strings);
} catch (Exception e) {
if(DebugUtil.DEBUG) {
e.printStackTrace();
}
callback.onFailAuth();
}
}
private void publishPermissions() {
try {
DebugUtil.log("PUBLISH PERMISSIONS");
LoginManager loginManager = LoginManager.getInstance();
loginManager.registerCallback(callbackManager, publishCallback);
ArrayList<String> stringss = new ArrayList<>();
stringss.add("publish_actions");
loginManager.logInWithPublishPermissions(contextCallback.getActivity(), stringss);
} catch (Exception e) {
if(DebugUtil.DEBUG) {
e.printStackTrace();
}
callback.onFailPublishPermission();
}
}
private void login() {
DebugUtil.log("LOGIN");
GraphRequest request = GraphRequest.newMeRequest(authResult.getAccessToken(),
graphJSONObjectCallback);
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email");
request.setParameters(parameters);
request.executeAsync();
}
private FacebookCallback<LoginResult> authorizeCallback =
new FacebookCallback<LoginResult>() {
@Override public void onSuccess(LoginResult loginResult) {
DebugUtil.log("AUTH SUCCESS!");
authResult = loginResult;
publishPermissions();
}
@Override public void onCancel() {
DebugUtil.log("AUTH CANCEL");
callback.onCancelAuth();
}
@Override public void onError(FacebookException e) {
if(e != null && DebugUtil.DEBUG) {
e.printStackTrace();
}
callback.onFailAuth();
}
};
private FacebookCallback<LoginResult> publishCallback =
new FacebookCallback<LoginResult>() {
@Override public void onSuccess(LoginResult loginResult) {
DebugUtil.log("PUBLISH SUCCESS");
login();
}
@Override public void onCancel() {
DebugUtil.log("PUBLISH CANCEL");
callback.onCancelPublishPermission();
}
@Override public void onError(FacebookException e) {
DebugUtil.log("PUBLISH ERROR");
if(e != null && DebugUtil.DEBUG) {
e.printStackTrace();
}
callback.onFailPublishPermission();
}
};
private GraphRequest.GraphJSONObjectCallback graphJSONObjectCallback =
new GraphRequest.GraphJSONObjectCallback() {
@Override public void onCompleted(
JSONObject jsonObject, GraphResponse graphResponse) {
if(jsonObject != null) {
callback.onSuccess(jsonObject);
} else {
callback.onFailGraphRequest();
}
}
};
public interface Callback {
void onSuccess(JSONObject graphUser);
void onFailGraphRequest();
void onFailAuth();
void onFailPublishPermission();
void onCancelAuth();
void onCancelPublishPermission();
}
public interface ContextCallback {
AppCompatActivity getActivity();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment