I have tried to use the facebook sdk in libgdx with callbacks, but it never enters the authetication listeners, so the user never is logged in, it permits the authorization for the facebook app but it never implements the authentication interfaces :(
Is there a way to use it?
public MyFbClass()
{
facebook = new Facebook(APPID);
mAsyncRunner = new AsyncFacebookRunner(facebook);
SessionStore.restore(facebook, this);
FB.init(this, 0, facebook, this.permissions);
}
///Method for init the permissions and my listener for authetication
public void init(final Activity activity, final Facebook fb,final String[] permissions)
{
mActivity = activity;
this.fb = fb;
mPermissions = permissions;
mHandler = new Handler();
async = new AsyncFacebookRunner(mFb);
params = new Bundle();
SessionEvents.addAuthListener(auth);
}
///I call the authetication process, I call it with a callback from libgdx
public void facebookAction()
{
// TODO Auto-generated method stub
fb.authenticate();
}
///It only allow the app permission, it doesnt register the events
public void authenticate()
{
if (mFb.isSessionValid())
{
SessionEvents.onLogoutBegin();
AsyncFacebookRunner asyncRunner = new AsyncFacebookRunner(mFb);
asyncRunner.logout(getContext(), new LogoutRequestListener());
//SessionStore.save(this.mFb, getContext());
}
else
{
mFb.authorize(mActivity, mPermissions,0 , new DialogListener());
}
}
public class SessionListener implements AuthListener, LogoutListener
{
@Override
public void onAuthSucceed()
{
SessionStore.save(mFb, getContext());
}
@Override
public void onAuthFail(String error) {
}
@Override
public void onLogoutBegin() {
}
@Override
public void onLogoutFinish() {
SessionStore.clear(getContext());
}
}
DialogListener() {
@Override
public void onComplete(Bundle values)
{
SessionEvents.onLoginSuccess();
}
@Override
public void onFacebookError(FacebookError error)
{
SessionEvents.onLoginError(error.getMessage());
}
@Override
public void onError(DialogError error)
{
SessionEvents.onLoginError(error.getMessage());
}
@Override
public void onCancel()
{
SessionEvents.onLoginError("Action Canceled");
}
}