Facebook SDK (единый вход) не работает на устройстве - PullRequest
2 голосов
/ 11 октября 2011

Я использую единый вход в своем приложении (http://developers.facebook.com/docs/mobile/android/build/). Кажется, что он отлично работает на эмуляторе (я успешно вхожу в систему и получаю access_token). Но в моем Nexus S веб-просмотр появляется, но я всегда получаю " вход не выполнен ".

Вот мой код:

((Button)findViewById(R.id.BtnFacebook)).setOnClickListener(new OnClickListener(){

        public void onClick(View v) {

            //startActivity(intentLoginFacebook);

            facebook.authorize(Login.this, new String[] {"user_about_me","user_activities","user_birthday","user_education_history","user_events","user_groups","user_hometown","user_interests","user_likes","user_location","user_religion_politics","user_status","user_website","user_work_history","read_requests","read_stream","friends_events","email","create_event","manage_friendlists","offline_access","rsvp_event"}, new DialogListener() {
                @Override
                public void onComplete(Bundle values) {

                    String id = "";
                    String access_token = facebook.getAccessToken();
                    System.out.println("ACCESSTOKENNNN:" + access_token);

                    try {
                        String response = facebook.request("me");

                        JSONObject obj = new JSONObject(response);
                        id = obj.getString("id");
                        System.out.println("response: "+response);

                    } catch (IOException ex) {
                        Log.d("Facebook", ex.getMessage());
                    } catch (Exception e) {
                        Log.d("Facebook", e.getMessage());
                    }


                    //Verification du login/password
                    new LoginFacebook().execute(id,access_token);
                    System.out.println("IDDDDDDDD:" + id);              

                }

                @Override
                public void onFacebookError(FacebookError error) {
                    Toast.makeText(getApplicationContext(), "Facebook error: login failed", Toast.LENGTH_LONG).show();

                }

                @Override
                public void onCancel() {
                }

                @Override
                public void onError(DialogError e) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getApplicationContext(), "Login failed", Toast.LENGTH_LONG).show();

                }
            });

        } 
            });

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 12 октября 2011

Скорее всего, SDK хранит ваши параметры access_token и expires_in в SharedPreferences. Вам необходимо зарегистрировать подробную ошибку. Если вы получаете исключение OAuth при вызове API, вам нужно удалить access_token из SharedPreferences и просто повторно авторизоваться.

надеюсь, это поможет

...