Last active
September 9, 2015 13:43
-
-
Save ppamorim/3cd0a141aac5d52bd60e 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 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