1

这是我将 Facebook 与 Android 应用程序 (parse.com) 集成的代码。

请在下面找到代码和堆栈跟踪。这里尝试从解析中验证 FB 用户。

当您单击login with Facebook选项应用程序崩溃。任何建议将不胜感激。

private void onLoginButtonClicked() {
        // TODO Auto-generated method stub
        LoginActivity.this.progressDialog = ProgressDialog.show(
                LoginActivity.this, "", "Logging in...", true);
        List<String> permissions = Arrays.asList("basic_info", "user_about_me",
                "user_relationships", "user_birthday", "user_location");

        // ParseFacebookUtils.initialize(appId);
        ParseFacebookUtils.logIn(permissions, this, new LogInCallback() {
            @Override
            public void done(ParseUser user, ParseException err) {
                LoginActivity.this.progressDialog.dismiss();
                if (user == null) {
                    Log.d(IntegratingFacebookTutorialApplication.TAG,
                            " user cancelled the Facebook login.");
                } else if (user.isNew()) {
                    Log.d(IntegratingFacebookTutorialApplication.TAG,
                            "User signed up and logged in through Facebook!");
                    showUserDetailsActivity();
                } else {
                    Log.d(IntegratingFacebookTutorialApplication.TAG,
                            "User logged in through Facebook!");
                    showUserDetailsActivity();
                }
            }
        });
    }

日志

    09-24 18:33:35.809: E/AndroidRuntime(641): FATAL EXCEPTION: main
09-24 18:33:35.809: E/AndroidRuntime(641): java.lang.IllegalStateException: You must call ParseFacebookUtils.initialize() before using ParseFacebookUtils
09-24 18:33:35.809: E/AndroidRuntime(641):  at com.parse.ParseFacebookUtils.checkInitialization(ParseFacebookUtils.java:88)
09-24 18:33:35.809: E/AndroidRuntime(641):  at com.parse.ParseFacebookUtils.logIn(ParseFacebookUtils.java:331)
09-24 18:33:35.809: E/AndroidRuntime(641):  at com.parse.ParseFacebookUtils.logIn(ParseFacebookUtils.java:355)
09-24 18:33:35.809: E/AndroidRuntime(641):  at com.tukutane.LoginActivity.onLoginButtonClicked(LoginActivity.java:168)
09-24 18:33:35.809: E/AndroidRuntime(641):  at com.tukutane.LoginActivity.onClick(LoginActivity.java:154)
09-24 18:33:35.809: E/AndroidRuntime(641):  at android.view.View.performClick(View.java:4084)
09-24 18:33:35.809: E/AndroidRuntime(641):  at android.view.View$PerformClick.run(View.java:16966)
09-24 18:33:35.809: E/AndroidRuntime(641):  at android.os.Handler.handleCallback(Handler.java:615)
09-24 18:33:35.809: E/AndroidRuntime(641):  at android.os.Handler.dispatchMessage(Handler.java:92)
09-24 18:33:35.809: E/AndroidRuntime(641):  at android.os.Looper.loop(Looper.java:137)
09-24 18:33:35.809: E/AndroidRuntime(641):  at android.app.ActivityThread.main(ActivityThread.java:4745)
09-24 18:33:35.809: E/AndroidRuntime(641):  at java.lang.reflect.Method.invokeNative(Native Method)
09-24 18:33:35.809: E/AndroidRuntime(641):  at java.lang.reflect.Method.invoke(Method.java:511)
09-24 18:33:35.809: E/AndroidRuntime(641):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
09-24 18:33:35.809: E/AndroidRuntime(641):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-24 18:33:35.809: E/AndroidRuntime(641):  at dalvik.system.NativeStart.main(Native Method)
4

4 回答 4

3

你必须打电话给这个

ParseFacebookUtils.initialize(appId);

ParseFacebookUtils.logIn();
于 2013-09-24T13:29:07.640 回答
3
09-24 18:33:35.809: E/AndroidRuntime(641): java.lang.IllegalStateException: You must call ParseFacebookUtils.initialize() before using ParseFacebookUtils

您在调用登录之前是否初始化了解析工具?至少您共享的日志文件表明您没有这样做。

调用以下方法:

ParseFacebookUtils.initialize()    

你在打电话

Parse.Initialize()
于 2013-09-24T13:30:27.627 回答
0

使用这样的应用程序类

public class SampleApp extends Application {


private static String PARSE_APPLICATION_ID;
private static String PARSE_CLIENT_KEY;

@Override
public void onCreate() {
    super.onCreate();

    PARSE_APPLICATION_ID = getResources().getString(R.string.PARSE_APPLICATION_ID);
    PARSE_CLIENT_KEY = getResources().getString(R.string.PARSE_CLIENT_KEY);
    Log.d(tag, "initializing with keys");
    // Add your initialization code here
    Parse.initialize(this, PARSE_APPLICATION_ID, PARSE_CLIENT_KEY);
    // This allows read access to all objects
    ParseACL defaultACL = new ParseACL();

    defaultACL.setPublicReadAccess(true);
    defaultACL.setPublicWriteAccess(true);

    ParseACL.setDefaultACL(defaultACL, true);

    Log.d(tag, "initializing app complete");
}
}

在清单中添加这个

我希望这将清除错误。

于 2013-09-24T15:23:18.923 回答
0

对于获得此异常的每个人,请通过在应用程序标记下的清单中指定它来仔细检查您是否实际使用您的自定义应用程序类:)

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name=".CustomApplicationClassName">
于 2015-05-30T19:07:14.030 回答