[英]get email from facebook SDK login
如何從Facebook登錄獲取電子郵件ID
添加的權限是
mFBLoginButton.setReadPermissions("user_friends");
mFBLoginButton.setReadPermissions("public_profile");
mFBLoginButton.setReadPermissions("email");
mFBLoginButton.setReadPermissions("user_birthday");
我正在通過Facebook教程進行登錄和訪問電子郵件,我正在使用GraphRequest
代碼,如下所示
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/me?fields=email",
null,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
if (response != null)
Log.d(TAG, " response " + response.toString());
}
}
).executeAsync();
但我沒有收到回復中的電子郵件。 有人可以幫我嗎
正如“ Md Abdul Gafur”所述,請確保正確設置您的Facebook帳戶。
將依賴項添加到您的build.gradle中:
編譯'com.facebook.android:facebook-android-sdk:4.2.0'
將facebook活動添加到您的AndroidManifest.xml中:
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
然后在您的actvitiy中覆蓋onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
通過以下活動從您的活動登錄:
FacebookSdk.sdkInitialize(mContext.getApplicationContext());
FacebookSdk.setApplicationId(mApiKey);
mCallbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse response) {
if (response.getError() != null) {
// handle error
} else {
if (user != null) {
// Get the data you need
String email = user.optString("email", "");
} else {
//handle null user
}
}
}
});
request.executeAsync();
}
@Override
public void onCancel() {
//handle cancel
}
@Override
public void onError(FacebookException exception) {
// handle exception
}
});
LoginManager.getInstance().logInWithReadPermissions(mContext, Collections.singletonList("public_profile"));
您需要在登錄時使用參數來請求權限以獲取權限,還必須考慮以下事實:並非每個登錄用戶都為自己的帳戶分配了一封電子郵件,還具有訪問該帳戶的權限。
您可以使用其手機號碼打開並驗證其Facebook帳戶,因此您的帳戶中不存在電子郵件的可能性。
希望此信息對您有所幫助!
使用此代碼。 它工作成功。 您可以由此獲取所有用戶數據。
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()); } });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.