Tuesday, May 28, 2013

Facebook SDK on Android 2.3 - Page not found

I have a problem with Facebook login on Android 2.3.3 (HTC Wildifre S). When I click on Login to Facebook button, it redirects me to Facebook app - I put there my login and password. Then I get redirected to web browser and I must login again on web page and then web browser redirects me to URL like fbconnect://success?access_token=xxxxxxxxxxxxx?expires_at=yyyyy. Web browser cannot handle this URL so I get page not found error and I'm not redirected to my app again.

I have Facebook App, I added package and class name in config, I have properly configured appId in my Android app and I generated key hash and put in my Facebook App config.

Strange thing is that it is working on Android 4.1 (Samsung Galaxy S Plus).

Here is code of my activity :

package com.example.apptest;  import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast;  import com.facebook.LoggingBehavior; import com.facebook.Session; import com.facebook.SessionState; import com.facebook.Settings; import com.facebook.android.Facebook;   public class FBLogin extends Activity {     public static final int GAME_THREAD_DELAY = 4000;     //private static final String URL_PREFIX_FRIENDS = "https://graph.facebook.com/me/friends?access_token=";      Facebook fb;     SharedPreferences sp;     private Button button_fblogin;     private Session.StatusCallback statusCallback = new SessionStatusCallback();      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_fblogin);          Toast.makeText(FBLogin.this, "onCreate", Toast.LENGTH_SHORT).show();          button_fblogin = (Button) findViewById(R.id.fblogin_btn);         Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);         Session session = Session.getActiveSession();          if (session == null){             Toast.makeText(FBLogin.this, "session == null", Toast.LENGTH_SHORT).show();             if (savedInstanceState != null){                 session = Session.restoreSession(this, null, statusCallback, savedInstanceState);             }             if (session == null){                 Toast.makeText(FBLogin.this, "session= new Session()", Toast.LENGTH_SHORT).show();                 session = new Session(this);             }             Session.setActiveSession(session);             if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)){                 session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));             }         }         updateView();     }      @Override     public void onStart(){         super.onStart();         Session.getActiveSession().addCallback(statusCallback);     }      @Override     public void onStop(){         super.onStop();         Session.getActiveSession().removeCallback(statusCallback);     }      @Override     public void onActivityResult(int requestCode, int resultCode, Intent data) {         super.onActivityResult(requestCode, resultCode, data);         Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);     }      @Override     protected void onSaveInstanceState(Bundle outState) {         super.onSaveInstanceState(outState);     }      private class SessionStatusCallback implements Session.StatusCallback {         @Override         public void call(Session session, SessionState state, Exception exception) {             updateView();         }     }      private void updateView() {         Toast.makeText(FBLogin.this, "updateView", Toast.LENGTH_SHORT).show();         Session session = Session.getActiveSession();         if (session.isOpened()) {             button_fblogin.setText(R.string.button_fblogout);             button_fblogin.setOnClickListener(new OnClickListener() {                 public void onClick(View view) { onClickLogout(); }             });         } else {             button_fblogin.setText(R.string.fblogin_button_title);             button_fblogin.setOnClickListener(new OnClickListener() {                 public void onClick(View view) { onClickLogin(); }             });         }     }        private void onClickLogin(){         Session session = Session.getActiveSession();         if (!session.isOpened() && !session.isClosed()){             session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));             Toast.makeText(FBLogin.this, "onClickLogin", Toast.LENGTH_SHORT).show();         }else{             Session.openActiveSession(this, true, statusCallback);         }     }      private void onClickLogout(){         Session session = Session.getActiveSession();         if (!session.isClosed()){             session.closeAndClearTokenInformation();         }     }      @Override     public boolean onCreateOptionsMenu(Menu menu) {         // Inflate the menu; this adds items to the action bar if it is present.         getMenuInflater().inflate(R.menu.fblogin, menu);         return true;     }  } 

Source: http://stackoverflow.com/questions/16790484/facebook-sdk-on-android-2-3-page-not-found

daytona 500 national margarita day Ronda Rousey PS4 Google Glass Cecil Hotel Cressida Bonas

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.