private void openSession(String applicationId, List<String> permissions, SessionLoginBehavior behavior, int activityCode, SessionAuthorizationType authType) { if (sessionTracker != null) { Session currentSession = sessionTracker.getSession(); if (currentSession == null || currentSession.getState().isClosed()) { Session session = new Session.Builder(getActivity()).setApplicationId(applicationId).build(); Session.setActiveSession(session); currentSession = session; } if (!currentSession.isOpened()) { Session.OpenRequest openRequest = new Session.OpenRequest(this). setPermissions(permissions). setLoginBehavior(behavior). setRequestCode(activityCode); if (SessionAuthorizationType.PUBLISH.equals(authType)) { currentSession.openForPublish(openRequest); } else { currentSession.openForRead(openRequest); } } } }
private Request createRequest(String userID, Set<String> extraFields, Session session) { Request request = Request.newGraphPathRequest(session, userID + "/friends", null); Set<String> fields = new HashSet<String>(extraFields); String[] requiredFields = new String[]{ ID, NAME }; fields.addAll(Arrays.asList(requiredFields)); String pictureField = adapter.getPictureFieldSpecifier(); if (pictureField != null) { fields.add(pictureField); } Bundle parameters = request.getParameters(); parameters.putString("fields", TextUtils.join(",", fields)); request.setParameters(parameters); return request; }
public static Promise<List<GraphUser>, BError, Void> getUserFriendList(){ final Deferred<List<GraphUser>, BError, Void> deferred = new DeferredObject<>(); if (!Session.getActiveSession().getState().isOpened()) { return deferred.reject(new BError(BError.Code.SESSION_CLOSED)); } Request req = Request.newMyFriendsRequest(Session.getActiveSession(), new Request.GraphUserListCallback() { @Override public void onCompleted(List<GraphUser> users, Response response) { deferred.resolve(users); } }); req.executeAsync(); return deferred.promise(); }
public static void logout(Context ctx){ userFacebookAccessToken = null; if (Session.getActiveSession() != null) { Session.getActiveSession().closeAndClearTokenInformation(); } else { if (DEBUG) Timber.e("getActiveSessionIsNull"); Session session = Session.openActiveSessionFromCache(ctx); if (session != null) session.closeAndClearTokenInformation(); } }
private void startLogin(GraphUser user, Session session) { try { loginMode = true; Fragment fragment = new FragmentSignIn(); Bundle args = new Bundle(); args.putInt(FragmentSignIn.LOGIN_MODE_ARG, LoginActivity.Mode.FACEBOOK.ordinal()); args.putString(FragmentSignIn.LOGIN_PASSWORD_OR_TOKEN_ARG, session.getAccessToken()); args.putString(FragmentSignIn.LOGIN_USERNAME_ARG, (String) user.getProperty("email")); fragment.setArguments(args); getChildFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment, "tag").setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).commit(); Analytics.SocialTimeline.login(); } catch (Exception e) { e.printStackTrace(); } }
public void requestUserData( Session session ) { // Request user data and show the results Request.newMeRequest(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { User currentUser = new User(); currentUser.setUserId(user.getId()); currentUser.setUserName(user.getUsername()); currentUser.setFirstName(user.getFirstName()); currentUser.setLastName(user.getLastName()); currentUser.setDisplayName(user.getName()); currentUser.setMail((String) user.getProperty("email")); currentUser.setProviderDisplayName("Facebook"); currentUser.setProvider(PROVIDER_NAME); FbLoginDelegate.this.mUserHelper.setCurrentUser(currentUser); if ( mUserSessionCallback != null) { mUserSessionCallback.onLogin(); } } } }).executeAsync(); }
/** * Changes the UI when an interaction with the Session object occurs with the user. * @param session The current active Session. * @param sessionState The current state of the active Session. * @param e An Exception if there is one. */ private void onSessionStateChange(Session session, SessionState sessionState, Exception e) { if (sessionState == SessionState.OPENED) { Log.d(TAG, "Successful login!"); new Request(session, "/me", null, HttpMethod.GET, new Request.Callback() { @Override public void onCompleted(Response response) { JSONObject obj = response.getGraphObject().getInnerJSONObject(); Log.d(TAG, "Got back " + obj + " from Facebook API."); UserSession.getInstance().setFacebookData(obj); getUserData(); } }).executeAsync(); } else if (e != null) { // handle exception } }
private boolean ensureOpenSession() { if (Session.getActiveSession() == null || !Session.getActiveSession().isOpened()) { Session.openActiveSession(this, true, PERMISSIONS, new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { onSessionStateChanged(session, state, exception); } }); return false; } makeMeRequest(); return true; }
private void sendRequestDialog() { Bundle params = new Bundle(); params.putString("title", "Solicitação de Aplicativo"); params.putString("message", "Experimente o IPRJapp"); params.putString("link","https://play.google.com/store/apps/details?id=com.wb.goog.batman.brawler2013"); params.putString("data", "{\"badge_of_awesomeness\":\"1\"," + "\"social_karma\":\"5\"}"); WebDialog requestsDialog = ( new WebDialog.RequestsDialogBuilder(this.getActivity(), Session.getActiveSession(), params)) .setOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(Bundle values, FacebookException error) { } }) .build(); requestsDialog.show(); }
private void updateView() { Session session = Session.getActiveSession(); if (session.isOpened()) { makeMeRequest(); // textInstructionsOrLink.setText(URL_PREFIX_FRIENDS + // session.getAccessToken()); // buttonLoginLogout.setText("Logout"); // buttonLoginLogout.setOnClickListener(new OnClickListener() { // public void onClick(View view) { onClickLogout(); } // }); } else { onClickLogin(); // textInstructionsOrLink.setText("Please login"); // buttonLoginLogout.setText("Login"); // buttonLoginLogout.setOnClickListener(new OnClickListener() { // public void onClick(View view) { onClickLogin(); } // }); } }
@Override public void connect(Activity activity) { Session session = Session.getActiveSession(); // TODO: I think we should validate the session here, but to what // extent? MadFacebookStatusCallback statusCallback = new MadFacebookStatusCallback(); // Check if the session is already open. if (!session.isOpened() && !session.isClosed()) { OpenRequest openRequest = new OpenRequest(activity); session.openForRead(openRequest .setCallback(statusCallback)); } else { Session.openActiveSession(activity, true, statusCallback); } }
public void populateContact() { final Session session = Session.getActiveSession(); new Request(session, "/me/friends", null, HttpMethod.GET, new Request.Callback() { public void onCompleted(Response response) { // Process the returned response GraphObject graphObject = response.getGraphObject(); if (graphObject != null) { // Check if there is extra data if (graphObject.getProperty("data") != null) { JSONArray arrayObject = (JSONArray) graphObject .getProperty("data"); int count = arrayObject.length(); if(count == 0) hasAppFriends = false; // Ensure the user has at least one friend //session.close(); } } } }).executeAsync(); }
/** * Constructs a SessionTracker to track the Session object passed in. * If the Session is null, then it will track the active Session instead. * * @param context the context object. * @param callback the callback to use whenever the Session's state changes * @param session the Session object to track * @param startTracking whether to start tracking the Session right away */ public SessionTracker(Context context, Session.StatusCallback callback, Session session, boolean startTracking) { this.callback = new CallbackWrapper(callback); this.session = session; this.receiver = new ActiveSessionBroadcastReceiver(); this.broadcastManager = LocalBroadcastManager.getInstance(context); if (startTracking) { startTracking(); } }
/** * Returns the current Session that's being tracked if it's open, * otherwise returns null. * * @return the current Session if it's open, otherwise returns null */ public Session getOpenSession() { Session openSession = getSession(); if (openSession != null && openSession.isOpened()) { return openSession; } return null; }
/** * Set the Session object to track. * * @param newSession the new Session object to track */ public void setSession(Session newSession) { if (newSession == null) { if (session != null) { // We're current tracking a Session. Remove the callback // and start tracking the active Session. session.removeCallback(callback); session = null; addBroadcastReceiver(); if (getSession() != null) { getSession().addCallback(callback); } } } else { if (session == null) { // We're currently tracking the active Session, but will be // switching to tracking a different Session object. Session activeSession = Session.getActiveSession(); if (activeSession != null) { activeSession.removeCallback(callback); } broadcastManager.unregisterReceiver(receiver); } else { // We're currently tracking a Session, but are now switching // to a new Session, so we remove the callback from the old // Session, and add it to the new one. session.removeCallback(callback); } session = newSession; session.addCallback(callback); } }
/** * Stop tracking the Session and remove any callbacks attached * to those sessions. */ public void stopTracking() { if (!isTracking) { return; } Session session = getSession(); if (session != null) { session.removeCallback(callback); } broadcastManager.unregisterReceiver(receiver); isTracking = false; }
private void addBroadcastReceiver() { IntentFilter filter = new IntentFilter(); filter.addAction(Session.ACTION_ACTIVE_SESSION_SET); filter.addAction(Session.ACTION_ACTIVE_SESSION_UNSET); // Add a broadcast receiver to listen to when the active Session // is set or unset, and add/remove our callback as appropriate broadcastManager.registerReceiver(receiver, filter); }
@Override public void onReceive(Context context, Intent intent) { if (Session.ACTION_ACTIVE_SESSION_SET.equals(intent.getAction())) { Session session = Session.getActiveSession(); if (session != null) { session.addCallback(SessionTracker.this.callback); } } }
@Override public void call(Session session, SessionState state, Exception exception) { if (wrapped != null && isTracking()) { wrapped.call(session, state, exception); } // if we're not tracking the Active Session, and the current session // is closed, then start tracking the Active Session. if (session == SessionTracker.this.session && state.isClosed()) { setSession(null); } }
/** * Gets the current Session. * * @return the current Session object. */ protected final Session getSession() { if (sessionTracker != null) { return sessionTracker.getSession(); } return null; }
/** * Gets the current state of the session or null if no session has been created. * * @return the current state of the session */ protected final SessionState getSessionState() { if (sessionTracker != null) { Session currentSession = sessionTracker.getSession(); return (currentSession != null) ? currentSession.getState() : null; } return null; }
/** * Gets the access token associated with the current session or null if no * session has been created. * * @return the access token */ protected final String getAccessToken() { if (sessionTracker != null) { Session currentSession = sessionTracker.getOpenSession(); return (currentSession != null) ? currentSession.getAccessToken() : null; } return null; }
/** * Gets the date at which the current session will expire or null if no session * has been created. * * @return the date at which the current session will expire */ protected final Date getExpirationDate() { if (sessionTracker != null) { Session currentSession = sessionTracker.getOpenSession(); return (currentSession != null) ? currentSession.getExpirationDate() : null; } return null; }
/** * Closes the current session. */ protected final void closeSession() { if (sessionTracker != null) { Session currentSession = sessionTracker.getOpenSession(); if (currentSession != null) { currentSession.close(); } } }
/** * Closes the current session as well as clearing the token cache. */ protected final void closeSessionAndClearTokenInformation() { if (sessionTracker != null) { Session currentSession = sessionTracker.getOpenSession(); if (currentSession != null) { currentSession.closeAndClearTokenInformation(); } } }
/** * Gets the permissions associated with the current session or null if no session * has been created. * * @return the permissions associated with the current session */ protected final List<String> getSessionPermissions() { if (sessionTracker != null) { Session currentSession = sessionTracker.getSession(); return (currentSession != null) ? currentSession.getPermissions() : null; } return null; }
@Override Request getRequestForLoadData(Session session) { if (adapter == null) { throw new FacebookException("Can't issue requests until Fragment has been created."); } String userToFetch = (userId != null) ? userId : "me"; return createRequest(userToFetch, extraFields, session); }
/** Re authenticate after session state changed.*/ public static Promise<Object, BError, Void> onSessionStateChange(Session session, SessionState state, Exception exception) { if (DEBUG) Timber.i("Session changed state"); // If we can start the login process with no errors this promise wont be used. // The returned promise will be from the loginWithFacebook. Deferred<Object, BError, Void> deferred = new DeferredObject<>(); if (exception != null) { exception.printStackTrace(); if (exception instanceof FacebookOperationCanceledException) { deferred.reject(new BError(BError.Code.EXCEPTION, exception)); return deferred.promise(); } } if (state.isOpened()) { if (DEBUG) Timber.i("Session is open."); // We will need this session later to make request. userFacebookAccessToken = Session.getActiveSession().getAccessToken(); return loginWithFacebook(); } else if (state.isClosed()) { // Logged out of Facebook if (DEBUG) Timber.i("Session is closed."); deferred.reject(new BError(BError.Code.SESSION_CLOSED, "Facebook session is closed.")); } return deferred.promise(); }
public static Promise<GraphObject, BError, Void> getUserDetails(){ final Deferred<GraphObject, BError, Void> deferred = new DeferredObject<>(); if (Session.getActiveSession().getState().isOpened()) { // Request user data and show the results Request.newMeRequest(Session.getActiveSession(), new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (response != null) { try { deferred.resolve(user); } catch (Exception e) { deferred.reject(BError.getExceptionError(e)); } } } }).executeAsync(); } else deferred.reject(new BError(BError.Code.SESSION_CLOSED)); return deferred.promise(); }
protected void onSessionStateChange(Session session, final SessionState state, Exception exception){ BFacebookManager.onSessionStateChange(session, state, exception) .fail(new FailCallback<BError>() { @Override public void onFail(BError bError) { if (DEBUG) Timber.e("onDoneWithError. Error: %s", bError.message); // Facebook session is closed so we need to disconnect from firebase. getNetworkAdapter().logout(); startLoginActivity(true); } }); }
public void onSessionStateChange(Session session, SessionState state, Exception exception){ if (!getNetworkAdapter().facebookEnabled()) { return; } if (exception != null) { exception.printStackTrace(); if (exception instanceof FacebookOperationCanceledException) { return; } }else showOrUpdateProgDialog(getString(R.string.authenticating)); BFacebookManager.onSessionStateChange(session, state, exception).done(new DoneCallback<Object>() { @Override public void onDone(Object o) { if (DEBUG) Timber.i("Connected to facebook"); afterLogin(); } }).fail(new FailCallback<BError>() { @Override public void onFail(BError bError) { if (DEBUG) Timber.i(TAG, "Error connecting to Facebook"); // Toast.makeText(LoginActivity.this, "Failed connect to facebook.", Toast.LENGTH_SHORT).show(); showAlertToast( getString(R.string.login_activity_facebook_connection_fail_toast) ); BFacebookManager.logout(ChatSDKAbstractLoginActivity.this); dismissProgDialog(); } }); }