首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从android应用程序获得facebook个人登录电子邮件

从android应用程序获得facebook个人登录电子邮件
EN

Stack Overflow用户
提问于 2015-09-06 14:51:41
回答 2查看 74关注 0票数 0

我得到了从facebook账户收到邮件的许可。虽然我没能拿到。总是一根空的绳子。这是我的密码。请帮帮我。

我在添加我使用的代码。它是从堆栈溢出复制的。

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

代码语言:javascript
复制
    callbackManager = CallbackManager.Factory.create();

    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    GraphRequest.newMeRequest(
                            loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(JSONObject user, GraphResponse response) {
                                    if (response.getError() != null) {
                                        // handle error
                                    } else {
                                        socialData = new ArrayList<NameValuePair>();
                                        String email = user.optString("email");
                                        String id = user.optString("id");
                                        String name = user.optString("name");
                                        socialData.add(new BasicNameValuePair("id",id));
                                        socialData.add(new BasicNameValuePair("name",name));
                                        socialData.add(new BasicNameValuePair("email",email));
                                        Log.e("id",id);
                                        Log.e("name",name);
                                        Log.e("email",email);
                                        Log.e("object",user.toString());
                                        // send email and id to your web server
                                        SocialLogin socialLogin = new SocialLogin();
                                        socialLogin.execute("app/social-login");

                                    }
                                }
                            }).executeAsync();

                }

                @Override
                public void onCancel() {
                    Toast.makeText(LoginActivity.this, "Login Cancel", Toast.LENGTH_LONG).show();
                }

                @Override
                public void onError(FacebookException exception) {
                    Toast.makeText(LoginActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show();
                }
            });

这是我的输出

代码语言:javascript
复制
E/id﹕ 1046433868724117
E/name﹕ Jafer Poovan P
E/email﹕ '
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-07 04:48:33

试着使用这段代码。工作成功了。

代码语言:javascript
复制
loginButton = (LoginButton) findViewById(R.id.login_button);

List < String > permissionNeeds = Arrays.asList("user_photos", "email",
	"user_birthday", "public_profile", "AccessToken");
loginButton.registerCallback(callbackManager,
new FacebookCallback < LoginResult > () {@Override
	public void onSuccess(LoginResult loginResult) {

		System.out.println("onSuccess");

		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) {
				Log.i("LoginActivity", response.toString());
				try {
					id = object.getString("id");
					try {
						URL profile_pic = new URL(
							"http://graph.facebook.com/" + id + "/picture?type=large");
						Log.i("profile_pic",
						profile_pic + "");

					} catch (MalformedURLException e) {
						e.printStackTrace();
					}
					name = object.getString("name");
					email = object.getString("email");
					gender = object.getString("gender");
					birthday = object.getString("birthday");
				} catch (JSONException e) {
					e.printStackTrace();
				}
			}
		});
		Bundle parameters = new Bundle();
		parameters.putString("fields",
			"id,name,email,gender, birthday");
		request.setParameters(parameters);
		request.executeAsync();
	}

	@Override
	public void onCancel() {
		System.out.println("onCancel");
	}

	@Override
	public void onError(FacebookException exception) {
		System.out.println("onError");
		Log.v("LoginActivity", exception.getCause().toString());
	}
});

有关更多信息和完全facebook登录代码Check my answer HERE

票数 0
EN

Stack Overflow用户

发布于 2015-09-06 15:05:36

查看v2.4:4的changelog中的“声明性字段”

现在您必须在API调用中指定字段,例如:/me?fields=name,email

...else您只得到字段"id“和"name”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32424802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档