Created
September 8, 2015 20:05
-
-
Save ppamorim/446183341ecd5ad099fe 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.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 JSONObject jsonObjectUser; | |
public Facebook() { | |
this.callbackManager = CallbackManager.Factory.create(); | |
} | |
public CallbackManager getCallbackManager() { | |
return callbackManager; | |
} | |
public Facebook authorize(Callback callbackk, ContextCallback contextCallbackk) { | |
this.callback = callbackk; | |
this.contextCallback = contextCallbackk; | |
LoginManager loginManager = LoginManager.getInstance(); | |
loginManager.registerCallback(callbackManager, loginCallback); | |
ArrayList<String> strings = new ArrayList<>(); | |
strings.add("public_profile"); | |
strings.add("email"); | |
loginManager.logInWithReadPermissions(contextCallback.getActivity(), strings); | |
return this; | |
} | |
public Facebook publishPermissions() { | |
LoginManager loginManager = LoginManager.getInstance(); | |
loginManager.registerCallback(callbackManager, publishCallback); | |
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) { | |
jsonObjectUser = jsonObject; | |
if(jsonObjectUser != null) { | |
publishPermissions(); | |
} else { | |
callback.onFail(); | |
} | |
} | |
}; | |
private AuthorizeCallback authorizeCallback = new AuthorizeCallback() { | |
@Override public void onSuccessAuth(LoginResult loginResult) { | |
login(loginResult); | |
} | |
@Override public void onErrorAuth(FacebookException e) { | |
if(DebugUtil.DEBUG) { | |
e.printStackTrace(); | |
} | |
callback.onFail(); | |
} | |
@Override public void onCancelAuth() { | |
callback.onCancel(); | |
} | |
}; | |
private FacebookCallback<LoginResult> loginCallback = | |
new FacebookCallback<LoginResult>() { | |
@Override public void onSuccess(LoginResult loginResult) { | |
authorizeCallback.onSuccessAuth(loginResult); | |
} | |
@Override public void onCancel() { | |
authorizeCallback.onCancelAuth(); | |
} | |
@Override public void onError(FacebookException e) { | |
if(DebugUtil.DEBUG) { | |
e.printStackTrace(); | |
} | |
authorizeCallback.onErrorAuth(e); | |
} | |
}; | |
private FacebookCallback<LoginResult> publishCallback = | |
new FacebookCallback<LoginResult>() { | |
@Override public void onSuccess(LoginResult loginResult) { | |
if(callback != null) { | |
if(jsonObjectUser != null) { | |
callback.onSuccess(jsonObjectUser); | |
} else { | |
callback.onFail(); | |
} | |
} | |
} | |
@Override public void onCancel() { // fail here :( | |
authorizeCallback.onCancelAuth(); | |
} | |
@Override public void onError(FacebookException e) { | |
if(DebugUtil.DEBUG) { | |
e.printStackTrace(); | |
} | |
authorizeCallback.onErrorAuth(e); | |
} | |
}; | |
public interface AuthorizeCallback { | |
void onSuccessAuth(LoginResult loginResult); | |
void onErrorAuth(FacebookException e); | |
void onCancelAuth(); | |
} | |
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