2012-04-24 91 views
1

我正試圖去Facebook上的應用程序登錄屏幕。當活動開始時,屏幕顯示一個Facebook加載頁面然後消失,並且頁面被設置爲R.layout.main。應用程序登錄頁面未顯示 - Android Facebook

我在這裏必須缺少重點,但是如何到達用戶登錄頁面以便登錄。

我一直在下面設在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); 
    } 
} 

謝謝您的幫助。

+0

安裝在您的手機的Facebook原生應用?並且檢查你是否遇到Logcat登錄失敗的錯誤 – Venky 2012-04-24 14:46:39

+0

我收到消息:04-24 15:54:05.050:D/CLIPBOARD(21628):在開始輸入時隱藏剪貼板對話框:由別人完成......! – user983965 2012-04-24 14:55:15

+0

Post full Logcat – Venky 2012-04-24 14:55:45

回答

5

似乎你的手機包含Facebook本機應用程序,所以它可能會拋出登錄失敗無效的關鍵錯誤在Logcat。

如果碰巧是由於Single Sign On問題。所以你需要創建Android的密鑰散列和您的應用程序註冊..

按照此Steps這樣做。

您可以在單行中禁用單點登錄,不需要使用創建哈希鍵,但這不是建議的方式來處理

添加-1Facebook。FORCE_DIALOG_AUTH授權()

facebookObject.authorize(context, PERMISSIONS,Facebook.FORCE_DIALOG_AUTH,new LoginListener()); 
+0

在我的情況下,還有一個問題,當我註冊Facebook應用程序時,我沒有啓用「配置Android SSO」。 – Nuraiz 2012-05-15 07:15:20

+0

非常感謝。 – 2013-10-21 05:42:29

0

您是否在清單中設置了<uses-permission android:name="android.permission.INTERNET"/>? 是否安裝了最新版本的fb應用程序?你是否用你的ID替換(不只是刪除)「APP_ID」?
此外:您的logcat中是否有任何錯誤記錄? 從普通的這應該工作...你是在uiThread,你的代碼沒有太大的不同從sampleCode ...嘿,它不是火箭科學...

+0

是的,它是在清單文件中,是最新版本安裝,是更換APP_ID – user983965 2012-04-24 14:56:11

1

我不知道我在哪裏閱讀此內容,但可能存在任何地方的錯誤,因此請嘗試設置活動代碼,並在授權()至-1

使用方法: 授權(活動活動的String []的權限,INT activityCode,DialogListener聽衆)

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

如果使用活動組,不要使用當前活動本身,而是組:

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

(期待您的活動的父母是的ActivityGroup)

1

更改

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

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

這迫使對話框顯示。

相關問題