应用程序登录页面未显示 - Android Facebook

问题描述:

我正试图去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

似乎你的手机包含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

您是否在清单中设置了<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

使用方法: 授权(活动活动的String []的权限,INT activityCode,DialogListener听众)

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

如果使用活动组,不要使用当前活动本身,而是组:

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

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

更改

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

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

这迫使对话框显示。