2

アプリで Facebook 認証を使用しようとしましたが、ログインできません。アプリが自分の情報にアクセスすることを許可するかどうかを尋ねるフォームに常にリダイレクトされます (つまり、コードの「dologin」メソッド)。 ..これが私のコードです:

package com.fbconnect;

import android.app.Activity;
import android.os.Bundle;
import com.facebook.*;
import com.facebook.model.*;
import com.facebook.widget.*;

import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.content.Intent;

public class MainActivity extends Activity {

    private TextView textInstructionsOrLink;
    private Button buttonLoginLogout;

    private Session.StatusCallback statusCallback = new SessionStatusCallback();

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        buttonLoginLogout = (Button)findViewById(R.id.login_button);
        setContentView(R.layout.main);
        Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
        Session session = Session.getActiveSession();
        if (session == null) {
            if (savedInstanceState != null) {
                session = Session.restoreSession(this, null, statusCallback, savedInstanceState);
            }
            if (session == null) {
                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);
        Session session = Session.getActiveSession();
        Session.saveSession(session, outState);
    }

    private void updateView() {
        Session session = Session.getActiveSession();
        Log.i("session log", session.toString());
        if (session.isOpened()) {
            TextView welcome = (TextView) findViewById(R.id.welcome);
            welcome.setText("Hello !");
        } else {

            doLogin();
        }
    }

    private void doLogin() {
        Session session = Session.getActiveSession();
        if (!session.isOpened() && !session.isClosed()) {
            session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
        } else {
            Session.openActiveSession(this, true, statusCallback);
        }
    }

    private class SessionStatusCallback implements Session.StatusCallback {
        @Override
        public void call(Session session, SessionState state, Exception exception) {
            updateView();
        }
    }
}
4

1 に答える 1

0

問題は実際に私がウィンドウズでいくつかの愚かな問題を抱えていたキーハッシュから来ました、ここにいくつかのアドバイスがあります:

  • Windows cmdを使用しないでください、cygwinを介して実行してください
  • %HOMEPATH%を使用しないでください(Facebookに表示されている場合でも...)、長い道のりをお勧めします: "C:\ Users \...\。android\debug.keystore"
  • キーストアパスを引用符で囲みます(スペースがない場合でも)
  • ジェネレーターがパスワードを要求しない場合、それは機能しません、あなたはコマンドで何か間違ったことをしました
于 2013-01-17T23:48:05.513 に答える