【发布时间】:2017-05-24 07:35:38
【问题描述】:
我正在编写一个 Facebook Android 应用程序,我遇到的问题之一是获取用户的电子邮件地址。对于除一个以外的所有 Facebook 帐户,电子邮件地址都会引发异常。这是我的代码:
loginButton = (LoginButton) findViewById(R.id.login_button);
callbackManager = CallbackManager.Factory.create();
loginButton.registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
String accessToken =
loginResult.getAccessToken().getToken();
Log.i("accessToken", accessToken);
GraphRequest request = GraphRequest.newMeRequest
(loginResult.getAccessToken(), new
GraphRequest.GraphJSONObjectCallback()
{
@Override
public void onCompleted(JSONObject object,
GraphResponse response)
{
SharedPreferences.Editor editor =
sharedPref.edit();
try
{
editor.putString("user_ID",
object.getString("id"));
user_ID = object.getString("id");
editor.putString("user_name." +
user_ID, object.isNull("name") ?
"" : object.getString("name"));
editor.putString("email_addr." +
user_ID, object.isNull("email") ?
"" : object.getString("email"));
editor.commit();
}
catch (Exception e)
{
Toast.makeText(LaunchPage.this, getString(R.string.login_error) + e.getMessage(), Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, name, email, gender, birthday, timezone, picture, locale, age_range");
request.setParameters(parameters);
request.executeAsync();
}
我在这个问题上花了几天时间,我想我正在做其他几个发布的解决方案中建议的事情,但我的代码仍然失败。我尝试在失败的 Facebook 帐户中公开我的电子邮件地址,但这没有帮助。
【问题讨论】:
-
是什么让您认为不应在问题中包含错误日志?
-
您的
setReadPermissions是否在您的loginButton中? -
@Denny 是什么让您认为错误日志与此问题相关?我想知道哪个傻瓜对我的问题投了反对票。
-
因为在你的问题中它说有一个异常,并且不知道它在哪里崩溃,它只是在猜测
-
@Denny 崩溃的地方很明显:它在 object.getString("email") 上。我使用 Android Studio 的调试器来获取我需要的所有信息,但信息并不多。
标签: android email facebook-graph-api facebook-android-sdk facebook-graph-api-v2.3