หน้าเข้าสู่ระบบแอปไม่แสดง - Android Facebook

ฉันกำลังพยายามไปที่หน้าจอเข้าสู่ระบบแอพบน Facebook เมื่อกิจกรรมเริ่มต้นขึ้น หน้าจอจะแสดงหน้าโหลด Facebook จากนั้นหายไป และหน้าดังกล่าวถูกตั้งค่าเป็น R.layout.main

ฉันต้องพลาดประเด็นนี้ไป แต่ฉันจะไปที่หน้าเข้าสู่ระบบของแอปเพื่อให้ผู้ใช้เข้าสู่ระบบได้อย่างไร

ฉันได้ติดตามบทช่วยสอนที่ https://developers.facebook.com/docs/mobile/android/build/#enablesso

โปรดทราบ - ฉันได้ลบ APP_ID แล้ว

package com.example.facebook;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;

import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;


public class MyGreatActivity extends Activity {

    Facebook facebook = new Facebook("APP_ID");
    private SharedPreferences mPrefs;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        /*
         * Get existing access_token if any
         */
        mPrefs = getPreferences(MODE_PRIVATE);
        String access_token = mPrefs.getString("access_token", null);
        long expires = mPrefs.getLong("access_expires", 0);
        if(access_token != null) {
            facebook.setAccessToken(access_token);
        }
        if(expires != 0) {
            facebook.setAccessExpires(expires);
        }

        /*
         * Only call authorize if the access_token has expired.
         */
        if(!facebook.isSessionValid()) {

            facebook.authorize(this, new String[] {}, new DialogListener() {
                @Override
                public void onComplete(Bundle values) {
                    SharedPreferences.Editor editor = mPrefs.edit();
                    editor.putString("access_token", facebook.getAccessToken());
                    editor.putLong("access_expires", facebook.getAccessExpires());
                    editor.commit();
                }

                @Override
                public void onFacebookError(FacebookError error) {}

                @Override
                public void onError(DialogError e) {}

                @Override
                public void onCancel() {}
            });
        }
    }

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

        facebook.authorizeCallback(requestCode, resultCode, data);
    }
}

ขอบคุณสำหรับความช่วยเหลือ.


person user983965    schedule 24.04.2012    source แหล่งที่มา
comment
ติดตั้ง Facebook Native App ในโทรศัพท์ของคุณแล้วหรือยัง? และตรวจสอบว่าคุณได้รับข้อผิดพลาดเช่นการเข้าสู่ระบบล้มเหลวใน Logcat   -  person Venky    schedule 24.04.2012
comment
ฉันได้รับข้อความ: 04-24 15:54:05.050: D/CLIPBOARD(21628): ซ่อนกล่องโต้ตอบคลิปบอร์ดที่อินพุตเริ่มต้น: เสร็จสิ้นโดยบุคคลอื่น... !   -  person user983965    schedule 24.04.2012


คำตอบ (4)


ดูเหมือนว่ามือถือของคุณมี Facebook Native App ดังนั้นจึงอาจมี login failed invalid key error ใน Logcat

ถ้ามันเกิดขึ้นนั่นคือปัญหาเนื่องจาก Single Sign On .. ดังนั้นคุณต้องสร้าง Android Key Hash และลงทะเบียนในแอปของคุณ ..

ทำตามขั้นตอนนี้

คุณสามารถปิดการใช้งานการลงชื่อเพียงครั้งเดียวในบรรทัดเดียวและไม่จำเป็นต้องใช้สร้างแฮชคีย์ แต่นี้ไม่แนะนำวิธีจัดการ

เพิ่ม -1 หรือ Facebook.FORCE_DIALOG_AUTH ใน อนุญาต()

facebookObject.authorize(context, PERMISSIONS,Facebook.FORCE_DIALOG_AUTH,new LoginListener());
person Venky    schedule 24.04.2012
comment
ในกรณีของฉัน ยังมีปัญหาหนึ่งที่ฉันไม่ได้เปิดใช้งานการกำหนดค่า Android SSO เมื่อลงทะเบียนแอพ Facebook - person Nuraiz; 15.05.2012

ฉันไม่แน่ใจว่าอ่านเจอที่ไหน แต่อาจมีข้อบกพร่องอยู่บ้าง ดังนั้นลองตั้งค่า activityCode ใน อนุญาต() เป็น -1.

ใช้วิธีการ: อนุญาต (กิจกรรมกิจกรรม, สิทธิ์สตริง [], int ActivityCode, ผู้ฟัง DialogListener)

facebook.authorize(this, new String[] {}, -1, new DialogListener(){..});

หากคุณใช้ ActivityGroups อย่าใช้กิจกรรมปัจจุบัน แต่ใช้กลุ่ม :

 facebook.authorize(activity.getParent(), new String[] {}, -1, new DialogListener(){..});

(คาดหวังว่าผู้ปกครองของกิจกรรมของคุณคือ ActivityGroup)

person salcosand    schedule 24.04.2012

เปลี่ยน

facebook.authorize(this, new String[] {}, new DialogListener()..etc 

to

facebook.authorize(this, new String[] {}, Facebook.FORCE_DIALOG_AUTH,
                    new DialogListener())..etc

นี่เป็นการบังคับให้กล่องโต้ตอบแสดง

person onosendai    schedule 24.04.2012

คุณได้ตั้งค่า <uses-permission android:name="android.permission.INTERNET"/> ไว้ในรายการหรือไม่? มีการติดตั้งแอพ fb เวอร์ชันล่าสุดหรือไม่ คุณได้แทนที่ (ไม่ใช่แค่ลบ) "APP_ID" ด้วย ID ของคุณหรือไม่
นอกจากนี้: มีข้อผิดพลาดใด ๆ ที่บันทึกไว้ใน logcat ของคุณหรือไม่ จากปกติ สิ่งนี้น่าจะได้ผล... คุณอยู่ใน uiThread โค้ดของคุณไม่ได้แตกต่างจาก SampleCode มากนัก... และเฮ้ มันไม่ใช่ rocketScience...

person Thkru    schedule 24.04.2012
comment
ใช่ มันอยู่ในไฟล์ Manifest ใช่ มีการติดตั้งเวอร์ชันล่าสุดแล้ว ใช่เพื่อแทนที่ APP_ID - person user983965; 24.04.2012