android – Session:尝试为具有挂起请求的会话请求新权限

我想通过Android应用程序发布故事,我使用下面的代码.

    private static final Listetof(PERMISSIONS,permissions)) {
                pendingPublishReauthorization = true;
                Session.NewPermissionsRequest newPermissionsRequest = new Session
                        .NewPermissionsRequest(this,PERMISSIONS);
            session.requestNewPublishPermissions(newPermissionsRequest);
                return;
            }

            Bundle params = new Bundle();
            ...
            params.putString("message",msg);
            params.putString("description",desc);
            params.putString("link",LINK);
                    ...


            Request.Callback callback= new Request.Callback() {
                public void onCompleted(Response response) {
                    JSONObject graphResponse = response
                                               .getGraphObject()
                                               .getInnerjsonObject();
                    String postId = null;
                    try {
                        postId = graphResponse.getString("id");
                    } catch (JSONException e) {
                        Log.i("FB-Response","JSON error "+ e.getMessage());
                    }
                    FacebookRequestError error = response.getError();
                    if (error != null) {
                        Toast.makeText(XXActivity.this
                             .getApplicationContext(),getString(R.string.fb_post_fail),Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(XXActivity.this
                                 .getApplicationContext(),getString(R.string.fb_post_success),Toast.LENGTH_LONG).show();
                    }
                }
            };

            Request request = new Request(session,"me/Feed",params,HttpMethod.POST,callback);

            RequestAsyncTask task = new RequestAsyncTask(request);
            task.execute();
        }

    }

    private boolean isSubsetof(Collection

有时我得到这2个错误….

java.lang.UnsupportedOperationException: Session: an attempt was made
to request new permissions for a session that has a pending request.

或者某个时候……

java.lang.UnsupportedOperationException: Session: an attempt was made
to request new permissions for a session that is not currently open.

任何建议都会受到赞赏.

最佳答案
首先,你的initFacebookSession方法是无用的,因为你在它下面调用Session.getActiveSession(),所以你可以删除这个方法.

接下来,您应该在onSessionStateChange方法中处理SessionState更改.虽然你没有,只有在调用publishAddCardStory方法的地方是在onCreate中,我假设你得到错误的原因是这样的:

>您在onCreate中调用publish方法
>在发布方法中,您通过会话调用requestNewPermissions,因此您的活动将被销毁,并且会显示请求允许来自用户的新权限的对话框的facebook活动,并且会话进入待处理状态
>用户将通过对话框允许(或不允许)新权限
>您的活动再次创建,因此当Session仍处于暂挂状态时,您再次调用newPermissionsRequest,而onSessionStateChange尚未调用

试着看看Facebook Dev Tutorials:https://developers.facebook.com/docs/android/scrumptious/
如何处理SessionState更改. Facebook SDK还提供了一些可能有用的示例应用程序.祝好运!

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...