1

Facebook を libgdx と統合しました。メイン クラスで Facebook ダイアログと別の画面を呼び出し、ログイン後に別の画面に移動する必要があります。

if (mFacebook.isSessionValid()) {
        String name = SessionStore.getName(this);
        name        = (name.equals("")) ? "Unknown" : name;
        pk          = name;
        initialize(new GO(), false);
    }
    else{
        initialize(new GOloginscreen(), false);
        mFacebook.authorize(this, PERMISSIONS, -1, new FbLoginDialogListener());
    }

ログイン セッションがある場合はメイン メニュー画面に移動しますが、そうでない場合は fb ログイン ダイアログを呼び出します。ログイン後、ここで初期化を設定します

public void onComplete(Bundle values) {
        SessionStore.save(mFacebook, AndroidStarter.this);
        getFbName();
        initialize(new GO(), false);
    }

初期化はoncreateメソッドにある必要があるため、機能しませんか?

どうすればこれを行うことができるか、または別の解決策を知っている人はいますか?

私はこれで立ち往生しています、ここに私の完全なコードがあります

public class AndroidStarter extends AndroidApplication{
private Facebook mFacebook;
private ProgressDialog mProgress;
String PERMISSIONS[] = { "read_stream", "user_relationship_details",
        "user_religion_politics", "user_work_history",
        "user_relationships", "user_interests", "user_likes",
        "user_location", "user_hometown", "user_education_history",
        "user_activities", "offline_access" };
String APP_ID = "thismyfbid2133";
public static String pk;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    pk = "id";
    // Do the stuff that initialize() would do for you
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

    mProgress       = new ProgressDialog(this);
    mFacebook       = new Facebook(APP_ID);       
    SessionStore.restore(mFacebook, this);
    if (mFacebook.isSessionValid()) {
        String name = SessionStore.getName(this);
        name        = (name.equals("")) ? "Unknown" : name;
        pk          = name;
        initialize(new GO(), false);
    }
    else{
        initialize(new GOloginscreen(), false);
        mFacebook.authorize(this, PERMISSIONS, -1, new FbLoginDialogListener());
    }
}


private final class FbLoginDialogListener implements DialogListener {
    public void onComplete(Bundle values) {
        SessionStore.save(mFacebook, AndroidStarter.this);
        getFbName();
    }

    public void onFacebookError(FacebookError error) {
        Toast.makeText(AndroidStarter.this, "Facebook connection failed", Toast.LENGTH_SHORT).show();
    }

    public void onError(DialogError error) {
        Toast.makeText(AndroidStarter.this, "Facebook connection failed", Toast.LENGTH_SHORT).show(); 
    }

    public void onCancel() {
    }
}

private void getFbName() {
    mProgress.setMessage("Finalizing ...");
    mProgress.show();

    new Thread() {
        @Override
        public void run() {
            String name = "";
            int what = 1;

            try {
                String me = mFacebook.request("me");

                JSONObject jsonObj = (JSONObject) new JSONTokener(me).nextValue();
                name = jsonObj.getString("name");
                what = 0;
            } catch (Exception ex) {
                ex.printStackTrace();
            }

            mFbHandler.sendMessage(mFbHandler.obtainMessage(what, name));
        }
    }.start();
}

private Handler mFbHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        mProgress.dismiss();

        if (msg.what == 0) {
            String username = (String) msg.obj;
            username = (username.equals("")) ? "No Name" : username;

            SessionStore.saveName(username, AndroidStarter.this);

            Toast.makeText(AndroidStarter.this, "Connected to Facebook as " + username, Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(AndroidStarter.this, "Connected to Facebook", Toast.LENGTH_SHORT).show();
        }
    }
};

}

4

0 に答える 0