我正在开发一个应用程序,其中我使用Facebook登录来进行身份验证和其他工作。facebook sdk 3.0需要一些权限来访问用户数据,如头像,emailID,publish_stram等。如何在代码中给予访问这些东西的权限。到目前为止,我可以得到fb_access_token。下面是我的代码:
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前授予权限?
任何帮助都将不胜感激。
发布于 2013-03-06 01:23:45
调用Session.openActiveSession只会给你提供基本的权限(除非你请求了额外的权限)。您还需要将读取权限请求和发布权限请求分开。
在您的情况下,我会这样做:
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);然后,一旦你打开了会话,
// 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);
}发布于 2013-03-05 22:15:52
我认为这就是在String[]中授权某种功能的方式
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()
{
}
});https://stackoverflow.com/questions/15225350
复制相似问题