以下是我将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)
答案 0 :(得分:3)
你必须打电话给这个
ParseFacebookUtils.initialize(appId);
之前
ParseFacebookUtils.logIn();
答案 1 :(得分: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()
答案 2 :(得分:0)
使用像这样的Application类
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");
}
}
在清单
中添加此内容我希望这会清除错误。
答案 3 :(得分:0)
对于获得此异常的每个人,通过在应用程序标记下的清单中指定它来检查您实际上是否正在使用自定义应用程序类:)
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name=".CustomApplicationClassName">