4678


現在AndroidとFacebookを連携させたアプリを作っており、ボタンを押すとFacebook認証を開始するようなプログラムを組んでいるのですが、なぜかボタンを押すとFacebookの認証画面と読み込み中の処理待ちダイアログが表示され、その後すぐに認証画面が消えてしまいます。しばらく色々と調べていると、`onActivityResult`で`authorizeCallback`を呼んであげる必要があると分かり、そのコードを追加したのですが、それでも画面が一瞬だけ現れ、すぐに消えてしまいました。しかも、ログを見ると`PostFacebook`クラスの`DialogListener`内の`onComplete`が呼ばれていました。なのになぜ認証画面が出てこないのでしょうか？これは非推奨のクラス（`Facebook`）やメソッド（`authorize`）を使っているから起こっている現象なのでしょうか？下記にコードを記していますので、どなたか分かる方がいればアドバイスをいただきたいです。すみませんが宜しくお願いします。

MainActivity

[code]

        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.facabook_button:
                    PostFacebook postFacebook = new PostFacebook(); {
                    postFacebook.shareFacebook(this);
                }
                break;
            }
        }
    
        @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                PostFacebook.createFacebook().authorizeCallback(requestCode, resultCode, data);
         }
    
[/code]

PostFacebook

[code]

        public class PostFacebook {
            private static Facebook mFacebook;
        }
    
        public static Facebook createFacebook() {
            return mFacebook;
        }
    
        public void shareFacebook(Activity activity) {
            PostFacebook postFacebook = new PostFacebook(activity.getApplicationContext());
            if (String.valueOf(postFacebook.getSession().getState()) == "CREATED_TOKEN_LOADED") {
                postFacebook.share();
            } else {
                loginFacebook(activity);
            }
        }
    
        public void loginFacebook(Activity activity) {
            Facebook facebook = new Facebook(activity.getString(R.string.Facebook_AppId));
            facebook.authorize(activity, new String[]{ "publish_actions" }, new Facebook.DialogListener() {
                @Override
                public void onComplete(Bundle values) {
                    Log.v("--->", "onComplete");
                }
    
                @Override
                public void onFacebookError(FacebookError e) {
                    Log.v("--->", "onFacebookError");
                }
    
                @Override
                public void onError(DialogError e) {
                    Log.v("--->", "onError");
                }
    
                @Override
                public void onCancel() {
                    Log.v("--->", "onCancel");
                }
            });
        }
    
[/code]


CC BY-SA 3.0
2015-01-16T03:33:39.250
4653
2016-06-21T06:38:31.230
2016-06-21T06:38:31.230
4
5210
question
android facebook
Facebookの認証画面が一瞬だけ現れて、すぐに消える


すみません、自己解決しました。authorizeの引数に`Facebook.FORCE_DIALOG_AUTH`を追加してあげることでログイン画面を表示させることができました。

[code]

    facebook.authorize(activity, new String[]{"publish_actions"}, Facebook.FORCE_DIALOG_AUTH, new Facebook.DialogListener() {
                @Override
                public void onComplete(Bundle values) {
                    Log.v("--->", "OK");
                }
    
[/code]


CC BY-SA 3.0
2015-01-16T08:02:44.413
4678
2015-01-16T08:02:44.413
5210
4653
answer