Created
September 4, 2015 23:58
-
-
Save ppamorim/76d40f0edf3fd4f64d47 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.myhappyapp.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.util.ArrayList; | |
import org.json.JSONObject; | |
public class Facebook implements FacebookCallback<LoginResult> { | |
private CallbackManager callbackManager; | |
private Callback callback; | |
private ContextCallback contextCallback; | |
private AuthorizeCallback authorizeCallback = null; | |
private LoginManager loginManager; | |
public Facebook() { | |
this.callbackManager = CallbackManager.Factory.create(); | |
} | |
public CallbackManager getCallbackManager() { | |
return callbackManager; | |
} | |
public Facebook authorizeLogin(Callback callbackk, ContextCallback contextCallback) { | |
this.callback = callbackk; | |
authorize(new AuthorizeCallback() { | |
@Override public void onSuccess(LoginResult loginResult) { | |
login(loginResult); | |
} | |
@Override public void onError(FacebookException e) { | |
if(DebugUtil.DEBUG) { | |
e.printStackTrace(); | |
} | |
callback.onFail(); | |
} | |
@Override public void onCancel() { //Fall here | |
callback.onCancel(); | |
} | |
}, contextCallback); | |
return this; | |
} | |
public Facebook authorize(AuthorizeCallback authorizeCallbackk, ContextCallback contextCallbackk) { | |
this.authorizeCallback = authorizeCallbackk; | |
this.contextCallback = contextCallbackk; | |
loginManager = LoginManager.getInstance(); | |
loginManager.registerCallback(callbackManager, this); | |
ArrayList<String> strings = new ArrayList<>(); | |
strings.add("public_profile"); | |
strings.add("email"); | |
loginManager.logInWithReadPermissions(contextCallback.getActivity(), strings); | |
ArrayList<String> stringss = new ArrayList<>(); | |
stringss.add("publish_actions"); | |
loginManager.logInWithPublishPermissions(contextCallback.getActivity(), stringss); | |
return this; | |
} | |
public void login(LoginResult loginResult) { | |
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), | |
graphJSONObjectCallback); | |
Bundle parameters = new Bundle(); | |
parameters.putString("fields", "id,name,email"); | |
request.setParameters(parameters); | |
request.executeAsync(); | |
} | |
private GraphRequest.GraphJSONObjectCallback graphJSONObjectCallback = | |
new GraphRequest.GraphJSONObjectCallback() { | |
@Override public void onCompleted( | |
JSONObject jsonObject, GraphResponse graphResponse) { | |
if(jsonObject != null) { | |
callback.onSuccess(jsonObject); | |
} else { | |
callback.onFail(); | |
} | |
} | |
}; | |
@Override public void onSuccess(LoginResult loginResult) { | |
authorizeCallback.onSuccess(loginResult); | |
} | |
@Override public void onCancel() { | |
authorizeCallback.onCancel(); | |
} | |
@Override public void onError(FacebookException e) { | |
if(DebugUtil.DEBUG) { | |
e.printStackTrace(); | |
} | |
authorizeCallback.onError(e); | |
} | |
public interface AuthorizeCallback { | |
void onSuccess(LoginResult loginResult); | |
void onError(FacebookException e); | |
void onCancel(); | |
} | |
public interface Callback { | |
void onSuccess(JSONObject graphUser); | |
void onFail(); | |
void onCancel(); | |
} | |
public interface ContextCallback { | |
AppCompatActivity getActivity(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment