微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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还提供了一些可能有用的示例应用程序.祝好运!

原文地址:https://www.jb51.cc/android/430873.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐