Boa tarde pessoal,
Estou integrando meu app com o Facebook. Mas não estou conseguindo fazer o login no Facebook. Segue minha classe de integração.
public class FacebookAPI {
private static Session.StatusCallback statusCallback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
onSessionStateChange(session, state);
}
};
private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");
private static Activity activity;
private static Notification notification;
private static final String PICTURE_URL = "https://s3-sa-east-1.amazonaws.com/notifymefiles/images/thumbnail/ic_launcher.png";
public static void doLogin(Activity activity, Notification notification) {
FacebookAPI.activity = activity;
FacebookAPI.notification = notification;
Session.openActiveSession(activity, true, statusCallback);
}
public static void shareNotification(Activity activity, Session session, Notification notification) {
if (session != null) {
FacebookAPI.activity = activity;
FacebookAPI.notification = notification;
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(activity, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
session.addCallback(statusCallback);
return;
}
if (notification != null) {
Bundle postParams = new Bundle();
if (notification.getNotificationType().getType().toUpperCase().equals(NotificationType.TEXT.getValue())) {
postParams.putString("message", String.valueOf(Html.fromHtml(notification.getContent())));
} else if (notification.getNotificationType().getType().toUpperCase().equals(NotificationType.URL.getValue())) {
postParams.putString("name", notification.getTitle());
postParams.putString("caption", "NotifyMe");
postParams.putString("description", notification.getDescription());
postParams.putString("link", notification.getContent());
postParams.putString("picture", PICTURE_URL);
}
shareNotification(activity, session, postParams);
}
} else {
doLogin(activity, notification);
}
}
private static void shareNotification(final Activity activity, Session session, Bundle postParams) {
if (session != null) {
Request.Callback callback = new Request.Callback() {
public void onCompleted(Response response) {
FacebookRequestError error = response.getError();
if (error != null) {
Toast.makeText(activity, activity.getString(R.string.notification_error_on_shared), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(activity, activity.getString(R.string.notification_shared), Toast.LENGTH_SHORT).show();
}
}
};
Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback);
RequestAsyncTask task = new RequestAsyncTask(request);
task.execute();
}
}
private static boolean isSubsetOf(Collection<String> subset, Collection<String> superset) {
for (String string : subset) {
if (!superset.contains(string)) {
return false;
}
}
return true;
}
private static void onSessionStateChange(Session session, SessionState state) {
if (state.isOpened()) {
shareNotification(activity, session, notification);
}
}
}
Quando eu testo a aplicação aparece a página para eu inserir o usuário e senha do facebook.
Depois que eu coloco as informações e clico em login, a página é carregada por um momento e logo depois ela se fecha. Sem dar nenhuma exception nem nada.
Alguem sabe o que pode ser?
Desde já agradeço!