4

これは私の最初の投稿です。コミュニティのルールを順守していない場合はお知らせください。

では問題に!私はアプリの Facebook ログイン プロセスをセットアップしようとしてきましたが、GUI 要素 (組み込みの Facebook ログイン ボタン) を追加し、ボタンを先に進めてユーザー/パスを要求するようになりました。アプリにユーザーのアカウントへのアクセスを許可します。私が直面している問題は、次のコードを使用してアプリからコールバック値を取得すると、何も受信しない (値が出力されない) ことです。現在、LogCat の任意の値に出力していますが、印刷が機能するとすぐに、ユーザー access_token およびその他の情報 (最初は機能しませんでした) にアクセスしようとします。どんな助けでも大歓迎です!

protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_connect_accounts);

            Log.i("fromMe", "test1");
            FacebookSdk.sdkInitialize(this.getApplicationContext());
            callbackManager = CallbackManager.Factory.create();
            LoginButton loginButton = (LoginButton)findViewById(R.id.login_button);
            loginButton.registerCallback(callbackManager, new   FacebookCallback<LoginResult>(){

                public void onSuccess(LoginResult loginResult) {
                    Log.i("fromMe", "1");
                }

                public void onCancel() {
                    Log.i("fromMe", "2");
                }

                public void onError(FacebookException exception) {
                    Log.i("fromMe", "3");
                }
            });
        }
4

3 に答える 3

1

組み込みの facebook ボタンを使用したことはありません。代わりに、リスナーをクリックして通常のボタンを使用しました。でこのメソッドを呼び出しますonClick()

 myButton.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        //Starting facebook signIN
        startFbSignIn();
    }
});

startFbSignIn();

private void startFbSignIn() {

        List<String> permissions = new ArrayList<>();
        permissions.add("email");

        Session.openActiveSession(this, true, permissions, new Session.StatusCallback() {
            @Override
            public void call(final Session session, SessionState sessionState, Exception e) {

                Log.d("X", "Call Called");

                if (session.isOpened()) {

                    Log.d("X", "SessionOpened" + session.getAccessToken());

                    //Showing some loading


                    Request.newMeRequest(session, new Request.GraphUserCallback() {
                        @Override
                        public void onCompleted(GraphUser graphUser, Response response) {

                            //FACEBOOOK SIGNIN SUCCESS
                            Log.i("X", "Facebook Login Success");
                            //Log
                            Log.d("X", "GRAPH USER:" + graphUser.toString());


                            String name = graphUser.getName();
                            //.....

                        }
                    }).executeAsync();

                } else {
                    Log.d("X", "SessioNOTopened");
                }

            }
        });

    }

上記の方法は私のためにうまく機能し、あなたonActivityResult()はこのように見える必要があります

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    //Facebook Session Manager
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
于 2015-05-21T02:17:14.727 に答える