Android请求电子邮件权限的Facebook SDK 3.7
我正在使用Facebook Android SDK来允许用户注册和使用应用程序。我想得到一些关于用户的基本信息,比如用户名和电子邮件。无论如何,我有问题,因为我得到空指针异常时,试图获取用户电子邮件Android请求电子邮件权限的Facebook SDK 3.7,android,facebook,email,facebook-android-sdk,facebook-sdk-3.0,Android,Facebook,Email,Facebook Android Sdk,Facebook Sdk 3.0,我正在使用Facebook Android SDK来允许用户注册和使用应用程序。我想得到一些关于用户的基本信息,比如用户名和电子邮件。无论如何,我有问题,因为我得到空指针异常时,试图获取用户电子邮件 String email = user.getProperty("email").toString(); 我假设我得到这个错误是因为我没有请求电子邮件许可。我怎么能做到 以下是完整的代码: public class RegisterActivity extends ActionBarActivit
String email = user.getProperty("email").toString();
我假设我得到这个错误是因为我没有请求电子邮件许可。我怎么能做到
以下是完整的代码:
public class RegisterActivity extends ActionBarActivity{
Button btnFacebook;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
getSupportActionBar().hide();
btnFacebook = (Button) findViewById(R.id.btn_facebook);
btnFacebook.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d("FACEBOOK", "Prije sesije");
// start Facebook Login
Session.openActiveSession(RegisterActivity.this, true, new Session.StatusCallback() {
// callback when session changes state
@SuppressWarnings("deprecation")
@Override
public void call(Session session, SessionState state,
Exception exception) {
Log.d("FACEBOOK", "U call");
if(session.isOpened()){
Log.d("FACEBOOK", "ako je sesija otvorena");
// make request to the /me API
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
Log.d("FACEBOOK", "onCompleted");
if(user != null){
Log.d("FACEBOOK", "user razlicit od null");
String email = user.getProperty("email").toString();
Toast.makeText(getApplicationContext(), "Ime "+user.getUsername().toString()+ "Email "+ email ,
Toast.LENGTH_SHORT).show();
String userId = user.getId();
//new DownloadImageTask(ivProfile).execute("http://graph.facebook.com/"+userId+"/picture?type=large");
Log.d("ID", userId);
}
Log.d("ID", user.getId());
}
});
}
Log.d("FACEBOOK", "nije u sesisji");
}
});
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
嘿,你可以这样试试
session.openForRead(new Session.OpenRequest(this).setPermissions(Arrays.asList("id", "name", "picture","installed" )).setCallback(statusCallback));
嘿,你可以这样试试
session.openForRead(new Session.OpenRequest(this).setPermissions(Arrays.asList("id", "name", "picture","installed" )).setCallback(statusCallback));
首先获取权限
private static final List<String> PERMISSIONS = Arrays.asList(
"email","user_location");
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("Activity result"," "+requestCode+" "+resultCode+" "+data.toString());
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}
将互联网权限放入清单
<uses-permission android:name="android.permission.INTERNET" />
在清单中声明Facebook登录活动
首先获取权限
private static final List<String> PERMISSIONS = Arrays.asList(
"email","user_location");
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("Activity result"," "+requestCode+" "+resultCode+" "+data.toString());
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}
将互联网权限放入清单
<uses-permission android:name="android.permission.INTERNET" />
在清单中声明Facebook登录活动
当我添加一个以上的权限(生日)如下时,它不起作用。多次加载RegisterActivity.private static final List PERMISSIONS=Arrays.asList(“电子邮件”、“用户位置”、“生日”);嗨,我也面临同样的问题。你的回答很好,但facebook首先要求获得基本权限,如果我接受了,弹出窗口会再次打开并要求获得邮件权限。你知道我怎么能只有一个弹出窗口来请求邮件权限吗?thx:)@Maxime no您不能,使用Facebook 3.0登录时,您不能请求超过默认提供的public_profile权限。此解决方案是完美的,当我添加一个权限(生日)时,如下所示,它不起作用。多次加载RegisterActivity.private static final List PERMISSIONS=Arrays.asList(“电子邮件”、“用户位置”、“生日”);嗨,我也面临同样的问题。你的回答很好,但facebook首先要求获得基本权限,如果我接受了,弹出窗口会再次打开并要求获得邮件权限。你知道我怎么能只有一个弹出窗口来请求邮件权限吗?thx:)@Maxime no您不能,使用Facebook 3.0登录时,您不能请求超过默认提供的public_profile权限。此解决方案非常完美