51

有谁知道这个错误是什么意思?每次我将我的 android 应用程序连接到 Facebook(通过模拟器)时,我都会在 LogCat shell 中得到它。

负责授权功能的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.authorize);
    mPrefs = getPreferences(MODE_PRIVATE);
    loginPref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);
    if(access_token != null) {
        Singelton.mFacebook.setAccessToken(access_token);
    }
    if(expires != 0) {
        Singelton.mFacebook.setAccessExpires(expires);
    }

    Singelton.mFacebook.authorize(this, new String[] {"email","user_birthday"}, new DialogListener() {
        @Override
        public void onComplete(Bundle values) {
            SharedPreferences.Editor editor = mPrefs.edit();
            editor.putString("access_token", Singelton.mFacebook.getAccessToken());
            editor.putLong("access_expires", Singelton.mFacebook.getAccessExpires());
            editor.commit();
            SharedPreferences.Editor logEditor = loginPref.edit();
            logEditor.putBoolean("login", true);
            logEditor.commit();
            addUser();
        }

        @Override
        public void onFacebookError(FacebookError error) {
            errorHandler();
        }

        @Override
        public void onError(DialogError e) {
            errorHandler();
        }

        @Override
        public void onCancel() {
            Log.d("MyApp", "Facebook cancel");
        }
    });

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Singelton.mFacebook.authorizeCallback(requestCode, resultCode, data);
}
4

8 回答 8

54

这可能是由于以下原因造成的:

  1. 您没有连接到互联网
  2. 您没有授予 Internet 访问权限 (Manifest.xml)
  3. 您没有为应用程序使用正确的哈希键
  4. 您没有提供正确的 App Id
于 2012-11-21T11:10:02.867 回答
44

这只是意味着您的手机上没有安装 Facebook 应用程序。不要太担心它。

Android 版 Facebook SDK 的工作方式是,每当您需要向 Facebook 发出请求时,SDK 都会检查您的设备上是否已经安装了 Facebook 应用程序。如果已安装,则通过应用程序发出请求。如果未安装应用程序,它会自行获取数据。

于 2012-10-01T09:02:23.743 回答
4

如果四个解决方案没有解决任何人的问题,这可能会有所帮助。当我开始使用 Fragments 实现 Facebook 登录时,我遇到了同样的错误。我使用的是标准片段而不是支持库 v4 片段,在切换到支持库片段后,我的问题就消失了。这可能是我的情况所独有的,但我想我会分享它以防万一。如果您使用登录按钮方法,也不要忘记设置片段。

myFacebookLoginButton.setFragment(this); //Assuming you're in a Fragment class
于 2015-05-20T03:05:54.593 回答
1

只需将以下权限添加到 AndroidManifest.xml

<uses-permission android:name="android.permission.SET_DEBUG_APP"/>
于 2013-01-05T16:22:51.810 回答
1

不要忘记覆盖 onActivityResult 并检查它是否调用(例如,如果您使用片段)

PS(也许对其他人有用,我在使用 parse facebook login 时遇到了这个问题=)

于 2014-12-17T10:00:39.663 回答
1

正如@Vinay-S-Shenoy 所说,当 Facebook 应用程序未安装在手机或模拟器上时,就会发生这种情况。为了避免这个错误,我所做的是在调用 facebook.authorize 方法之前检查 Facebook 应用程序是否已安装,以防 Facebook 应用程序未安装,我会向用户提醒此消息。

public boolean isFacebookAvailable() {

    Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "Test; please ignore");
intent.setType("text/plain");

    final PackageManager pm = this.getApplicationContext().getPackageManager();
    for(ResolveInfo resolveInfo: pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)){
        ActivityInfo activity = resolveInfo.activityInfo;
        // Log.i("actividad ->", activity.name);
        if (activity.name.contains("com.facebook.katana")) {
            return true;
        }
    }
    return false;
}
于 2013-03-06T17:00:15.437 回答
0

对我来说(但我与 ionic 合作)这是因为在启动之前缺少图像/模板错误:

ionic cordova build android

也许它可以帮助别人......

于 2018-05-02T15:09:17.480 回答
-7
btnFb_photo_post.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // postPhotoToWall(facebook.getAccessToken());
        facebook.authorize(MyFBTestActivity.this,
            new String[] { "publish_stream" },
            new DialogListener() {
                @Override
                public void onFacebookError(FacebookError e) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getApplicationContext(),
                    e.getMessage(), Toast.LENGTH_LONG).show();
                }

                @Override
                public void onError(DialogError dialogError) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getApplicationContext(),
                    dialogError.getMessage(),
                    Toast.LENGTH_LONG).show();
                }

                @Override
                public void onComplete(Bundle values) {
                    postToWall(values.getString(Facebook.TOKEN));
                }

                private void postToWall(String accessToken) {
                    // Toast.makeText(getApplicationContext(),
                    // "trying", Toast.LENGTH_LONG).show();
                    byte[] data = null;
                    Bitmap bi = BitmapFactory.decodeResource(
                        getResources(), 
                        R.drawable.ic_launcher
                    );
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                    data = baos.toByteArray();
                    Bundle params = new Bundle();
                    // if (facebook.getAccessToken() != null)
                    params.putString(Facebook.TOKEN,
                        facebook.getAccessToken()
                    );

                    params.putString("method", "photos.upload");
                    params.putString("caption", "www.samplelink.com");
                    // params.putString("message",
                    // "www.google.com");

                    params.putByteArray("picture", data);
                    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
                    mAsyncRunner.request(null, params, "POST",
                        new SampleUploadListener(), null);
                    }

                    @Override
                    public void onCancel() {
                        // TODO Auto-generated method stub
                    }
                }
            );
        }
    });

我正在使用此代码将图像上传到 FB 墙。试一次

于 2012-10-01T12:00:23.930 回答