Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Facebook API-我只接收一些fb帐户的电子邮件_Android_Facebook_Facebook Graph Api - Fatal编程技术网

Android Facebook API-我只接收一些fb帐户的电子邮件

Android Facebook API-我只接收一些fb帐户的电子邮件,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,我现在已经使用了一点Android的Facebook SDK。我的一个测试人员无法使用Facebook在我的应用程序中创建帐户,这让我遇到了麻烦。经过一些调试后,我发现由于某种原因,当他尝试登录/注册包含信息的JSON对象时,他的电子邮件没有附带这些信息。这只是为了他的缘故 有人知道为什么会这样吗 (我已经包含了我的登录代码的简化版本,以便您可以查看是否存在任何可能导致登录的错误) List permissionNeeds=Arrays.asList(“公共档案”、“用户朋友”、“电子邮件”);

我现在已经使用了一点Android的Facebook SDK。我的一个测试人员无法使用Facebook在我的应用程序中创建帐户,这让我遇到了麻烦。经过一些调试后,我发现由于某种原因,当他尝试登录/注册包含信息的JSON对象时,他的电子邮件没有附带这些信息。这只是为了他的缘故

有人知道为什么会这样吗

(我已经包含了我的登录代码的简化版本,以便您可以查看是否存在任何可能导致登录的错误)

List permissionNeeds=Arrays.asList(“公共档案”、“用户朋友”、“电子邮件”);
setReadPermissions(permissionNeeds);
registerCallback(mCallbackManager,newfacebookcallback()){
@凌驾
成功时公开作废(最终登录结果登录结果){
GraphRequest请求=GraphRequest.newmereRequest(
loginResult.getAccessToken(),新GraphRequest.GraphJSONObjectCallback(){
@凌驾
未完成公共无效(JSONObject对象,GraphResponse响应){
试一试{
Log.d(TAG,object.toString());//有时没有电子邮件!
}捕获(JSONException e){
e、 printStackTrace();
Log.e(TAG,String.format(“facebook登录错误:%s”,e.getMessage());
}
}
});
Bundle参数=新Bundle();
参数.putString(“字段”、“id、姓名、图片、电子邮件、性别”);
请求。设置参数(参数);
request.executeAsync();
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常错误){
Log.d(TAG,String.format(“facebook登录时出错:%s”,Error.getMessage());
}
});
loginButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
LoginManager.getInstance().logInWithReadPermissions(SplashActivity.this,
asList(“公共档案”、“用户朋友”、“电子邮件”);
}
});
如果需要更多的信息,请告诉我,我很乐意补充一些


谢谢

所以我的测试人员有一个不活跃的电子邮件帐户

一般来说,你不应该指望每个Facebook用户都有一个电子邮件地址

该账户是否有Facebook的电子邮件地址?(如果有人使用手机注册,则不一定如此。)此外,必须验证该电子邮件地址,否则将不会返回您的应用程序不应依赖于为每个用户获取电子邮件地址。如果您需要电子邮件地址,则执行一个用户可以手动输入的步骤。
List<String> permissionNeeds = Arrays.asList("public_profile", "user_friends", "email");
loginButton.setReadPermissions(permissionNeeds);

loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(final LoginResult loginResult) {
        GraphRequest request = GraphRequest.newMeRequest(
                loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        try {
                            Log.d(TAG, object.toString()); // Has no email sometimes!
                        } catch (JSONException e) {
                            e.printStackTrace();
                            Log.e(TAG, String.format("Error with facebook login: %s", e.getMessage()));
                        }
                    }
                });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name,picture,email,gender");
        request.setParameters(parameters);
        request.executeAsync();
    }

    @Override
    public void onCancel() {
    }

    @Override
    public void onError(FacebookException error) {
        Log.d(TAG, String.format("Error with facebook login: %s", error.getMessage()));
    }
});

loginButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        LoginManager.getInstance().logInWithReadPermissions(SplashActivity.this,
                Arrays.asList("public_profile", "user_friends", "email"));
    }
});