Android 获取用户facebook权限
我想向我的用户添加facebook权限。 我就是这样做的:Android 获取用户facebook权限,android,facebook,facebook-android-sdk,Android,Facebook,Facebook Android Sdk,我想向我的用户添加facebook权限。 我就是这样做的: Session.openActiveSession(this, true, new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { if (session.isOpened()) {
Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
List<String> PERMISSIONS = Arrays.asList("email");
if (!session.getPermissions().containsAll(PERMISSIONS)) {
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(MainActivity.this,
PERMISSIONS);
session.requestNewReadPermissions(newPermissionsRequest);
}
Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
Toast.makeText(MainActivity.this, user.asMap().get("email").toString(), Toast.LENGTH_LONG).show();
}
}
}).executeAsync();
}
}
});
Session.openActiveSession(此,true,新Session.StatusCallback(){
@凌驾
公共无效调用(会话、会话状态、异常){
if(session.isOpened()){
列表权限=Arrays.asList(“电子邮件”);
如果(!session.getPermissions().containsAll(权限)){
Session.newpermissions请求newpermissions请求=新会话.newpermissions请求(main活动.this,
许可);
session.requestNewReadPermissions(newPermissionsRequest);
}
Request.newMeRequest(会话,new Request.GraphUserCallback(){
@凌驾
未完成公共无效(GraphUser用户,响应){
如果(用户!=null){
Toast.makeText(MainActivity.this,user.asMap().get(“email”).toString(),Toast.LENGTH_LONG.show();
}
}
}).executeAsync();
}
}
});
问题是我不想每次都打开一个会话,只要用户没有这个权限。
有没有办法在本地知道用户是否已经在我的应用程序中批准了此权限?使用下面的代码
Session session = getActiveSession();
if(session.isOpened)
{
List<String> permissions = session.getPermissions();
if(!permissions.contain("email"))
{
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(MainActivity.this,
PERMISSIONS);
session.requestNewReadPermissions(newPermissionsRequest);
}
}else
{
Session.openActiveSession(this, true,callback);
}
Session Session=getActiveSession();
if(session.isOpened)
{
List permissions=session.getPermissions();
如果(!permissions.contain(“电子邮件”))
{
Session.newpermissions请求newpermissions请求=新会话.newpermissions请求(main活动.this,
许可);
session.requestNewReadPermissions(newPermissionsRequest);
}
}否则
{
openActiveSession(this,true,callback);
}
只有在用户没有电子邮件权限的情况下,如何才能打开它?!权限。包含(“电子邮件”)条件检查用户是否具有电子邮件权限或not@roiberg我不明白你的意思。本地意味着??本地意味着我不想打开会话。这是一个使用我的应用程序并已批准权限的用户,为什么每次我都需要在会话中“询问”facebook?你必须打开会话才能执行任何操作(包括发出graph API请求)。打开会话并不总是需要用户交互(通常仅在第一次打开会话时,在随后的时间中会缓存会话)。因此,您不应该害怕打开会话。当您请求新权限时,通常需要用户交互,在这种情况下,您应该使用Madhu上面指出的类似模式。