簡體   English   中英

從Facebook SDK登錄獲取電子郵件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM