首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在facebook-sdk-3.0中授予Facebook访问用户数据的权限

如何在facebook-sdk-3.0中授予Facebook访问用户数据的权限
EN

Stack Overflow用户
提问于 2013-03-05 21:45:02
回答 2查看 3.1K关注 0票数 1

我正在开发一个应用程序,其中我使用Facebook登录来进行身份验证和其他工作。facebook sdk 3.0需要一些权限来访问用户数据,如头像,emailID,publish_stram等。如何在代码中给予访问这些东西的权限。到目前为止,我可以得到fb_access_token。下面是我的代码:

代码语言:javascript
复制
Session.openActiveSession(this, true, new Session.StatusCallback() {

            // callback when session changes state
            @Override
            public void call(Session session, SessionState state,
                    Exception exception) {
                if (session.isOpened()) {
                    // make request to the /me API
                    Request.executeMeRequestAsync(session,
                            new Request.GraphUserCallback() {

                                // callback after Graph API response with
                                // user
                                // object
                                @Override
                                public void onCompleted(GraphUser user,
                                        Response response) {
                                    if (user != null) {
                                        fb_user_id = user.getId();
                                    }

                                    Session session = Session
                                            .getActiveSession();
                                    if (session.isOpened()) {
                                        access_token = session
                                                .getAccessToken();
                                    }

                                    new postFBData().execute();
                                }
                            });
                }
            }
        });

取自Facebook样例中的代码片段。如何在FB访问access_token前授予权限?

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-06 01:23:45

调用Session.openActiveSession只会给你提供基本的权限(除非你请求了额外的权限)。您还需要将读取权限请求和发布权限请求分开。

在您的情况下,我会这样做:

代码语言:javascript
复制
Session session = // create a new Session using Session.Builder
Session.OpenRequest openRequest = // create an OpenRequest using Session.OpenRequest
openRequest.setPermissions( READ_PERMISSION_LIST );
session.openForRead(openRequest);
Session.setActiveSession(session);

然后,一旦你打开了会话,

代码语言:javascript
复制
// check if you already have publish permissions first
if (!Session.getActiveSession.getPermissions.contains("publish_stream")) {
  Session.NewPermissionsRequest permissionRequest = // create a NewPermissionsRequest
  permissionRequest.setPermissions( PUBLISH_PERMISSION_LIST);
  Session.getActiveSession().requestNewPublishPermissions(permissionRequest);
}
票数 3
EN

Stack Overflow用户

发布于 2013-03-05 22:15:52

我认为这就是在String[]中授权某种功能的方式

代码语言:javascript
复制
 fb.authorize(MainActivity.this,new String[] {"publish_stream"}, new DialogListener(){

            @Override
            public void onFacebookError(FacebookError e)
            {
                Toast.makeText(MainActivity.this, "on Facebook error", Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onError(DialogError e)
            {
                Toast.makeText(MainActivity.this, "on error", Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onComplete(Bundle values)
            {
                updateButtonImage();

            }
            @Override
            public void onCancel()
            {

            }
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15225350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档