繁体   English   中英

适用于Android 3.0的Facebook SDK:UnsupportedOperationException

[英]Facebook SDK for Android 3.0: UnsupportedOperationException

 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;
            }

此异常是什么意思以及如何解决?

Dmytro,根据我的评论,我整理了几篇文章,全面解释了如何打开Facebook会话并请求其他权限: 此处此处 希望您和其他人发现它有益,并节省使用SDK的时间! :)

编辑:之所以收到此异常,是因为您无法在未打开的会话上请求新的权限。 您需要在请求新权限或发出其他Facebook API请求之前打开会话。 我在上面链接的文章中汇总了一个指南,以确保在打开用户会话并具有所需权限之前,不会发出Facebook API请求(例如,发布到用户的供稿等)。

这意味着您正在请求其权限的会话处于非活动状态/已过期。 您需要请求之前重新建立会话。

您是否在调用requestNewPublishPermissions之前调用了session.openForPublish(Session.OpenRequest openRequest)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM