01-29 21:06:00.601: ERROR/AndroidRuntime(582): FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:2144)
at android.view.View.performClick(View.java:2485)
at android.view.View$PerformClick.run(View.java:9080)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at android.view.View$1.onClick(View.java:2139)
... 11 more
Caused by: java.lang.UnsupportedOperationException: Session: an attempt was made to request new permissions for a session that is not currently open.
at com.facebook.Session.requestNewPermissions(Session.java:977)
at com.facebook.Session.requestNewPublishPermissions(Session.java:501)
at ***.MainActivity.postToFacebook(MainActivity.java:105)
... 14 more
行中引发异常
session.requestNewPublishPermissions(newPermissionsRequest);
// Check for publish permissions
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session
.NewPermissionsRequest(this, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
Toast.makeText(getActivity().getApplicationContext(),
"Not enough permissions",
Toast.LENGTH_SHORT).show();
return;
}
这个例外是什么意思以及如何解决它?
答案 0 :(得分:1)
Dmytro,根据我的评论,我已经汇总了几篇文章,完全解释了开设Facebook会话并请求其他权限:here和here。希望您和其他人发现它有益并节省开始使用SDK的时间! :)
编辑:您获得此异常的原因是您不能 请求非开放会话的新权限。你需要打开你的 请求新权限或制作其他Facebook API之前的会话 要求。我在上面链接的文章中整理了一个指南 确保Facebook API请求(例如发布到用户的Feed) 等等,直到用户的会话打开并且没有 用户具有所需的权限。
答案 1 :(得分:0)
这意味着您请求权限的会话处于非活动/已过期状态。您需要在请求权限之前重新建立会话。
答案 2 :(得分:0)
在调用requestNewPublishPermissions之前,您是否调用了session.openForPublish(Session.OpenRequest openRequest)?