我正在努力处理这种情况:
我遇到的问题是我无法将应用程序ID作为资源提供,因此我使用它来创建facebook会话:
mFacebookSession = Session.getActiveSession();
if (mFacebookSession == null)
{
mFacebookSession = new Session.Builder(m_activity).setApplicationId(fbAppId).build();
Session.setActiveSession(mFacebookSession);
mFacebookStatusCallback = new FacebookStatusCallback(mFacebookSession, mFacebookWrapper);
}
要打开会话,我使用:
if (!mFacebookSession.isOpened() && !mFacebookSession.isClosed())
{
Session.OpenRequest openRequest = new Session.OpenRequest(mActivity).setCallback(mFacebookStatusCallback);
openRequest.setPermissions(Arrays.asList("user_birthday", "email"));
mFacebookSession.openForPublish(openRequest); //tried with openForRead too
}
else
{
Session.openActiveSession(mActivity, true, Arrays.asList("user_birthday", "email"), mFacebookStatusCallback);
}
一切都应该没问题,但因为我没有在资源中提供facebook app id,所以我明白了:
02-27 14:53:55.011: E/AndroidRuntime(17294): java.lang.NullPointerException: Argument 'applicationId' cannot be null
02-27 14:53:55.011: E/AndroidRuntime(17294): at com.facebook.internal.Validate.notNull(Validate.java:29)
02-27 14:53:55.011: E/AndroidRuntime(17294): at com.facebook.Session.<init>(Session.java:281)
02-27 14:53:55.011: E/AndroidRuntime(17294): at com.facebook.Session.<init>(Session.java:270)
02-27 14:53:55.011: E/AndroidRuntime(17294): at com.facebook.Session$Builder.build(Session.java:1822)
02-27 14:53:55.011: E/AndroidRuntime(17294): at com.facebook.Session.openActiveSession(Session.java:1130)
02-27 14:53:55.011: E/AndroidRuntime(17294): at com.facebook.Session.openActiveSession(Session.java:1041)
我需要提一下,在步骤3(第二次登录尝试)中抛出异常。第一次尝试登录有效。 任何人都可以告诉我如何提供applicationId,以便在尝试打开活动会话时不会出现错误? 处理取消的例外时我应该做些什么特别的事吗?我目前正在祝贺该行动被取消。
因为我被要求发布清单,我会提到我在其中有facebook活动:
<activity
android:name="com.facebook.LoginActivity"
android:label="@string/app_name" >
</activity>
答案 0 :(得分:0)
一年多前使用我自己的answers找到了问题和解决方案。
我改变了打开会话的方式:
if (!mFacebookSession.isOpened())
{
if(mFacebookSession.isClosed())
{
mFacebookSession = new Session.Builder(m_activity).setApplicationId(fbAppId).build();
Session.setActiveSession(mFacebookSession);
}
Session.OpenRequest openRequest = new Session.OpenRequest(mActivity).setCallback(mFacebookStatusCallback);
openRequest.setPermissions(Arrays.asList("user_birthday", "email"));
mFacebookSession.openForRead(openRequest);
}
else
{
Session.openActiveSession(mActivity, true, Arrays.asList("user_birthday", "email"), mFacebookStatusCallback);
}