簡體   English   中英

Android Facebook SDK生日返回null

[英]Android Facebook SDK birthday returns null

我正在使用Facebook SDK(facebook-android-sdk-3.16),並嘗試檢索用戶public_profile信息。

但是當我嘗試獲取用戶生日時,它總是使我無效

這是我的代碼:

public void onClick(View view) {

    openActiveSession(_mActivity, true, new Session.StatusCallback() {                  

        @Override
        public void call(Session session, SessionState state, Exception exception) {
            if (session.isOpened()) {

                Log.v(APP_TAG, " ============== " + session.getPermissions());
                Log.v(APP_TAG, " ============== " + session.isPermissionGranted("user_birthday"));
                //make request to the /me API);
                Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        Log.d(APP_TAG, " ============== " + response);
                        if (user != null) {

                            _medtFName.setText(user.getFirstName());
                            _medtLName.setText(user.getLastName());
                            _medtEmailAddress.setText(user.getProperty("email").toString());
                            Log.i(APP_TAG, " ============== " + user.getBirthday());                                    

                            Log.i(APP_TAG, " ============== " + user.getProperty("gender").toString());
                        }
                    }
                });
             }
         }
     });
}


private static Session openActiveSession(Activity activity, boolean allowLoginUI, Session.StatusCallback callback) {
    Session.Builder builder = new Builder(activity);
    Session session = builder.build();
    Session.OpenRequest openRequest = new OpenRequest(activity);
    List<String> permission=new ArrayList<String>();
    permission.add("user_birthday");
    permission.add("user_likes");
    permission.add("user_location");
    permission.add("email");

    if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI) {

        openRequest.setPermissions(permission);
        Session.setActiveSession(session);//This will take care of the null pointer
        openRequest.setCallback(callback);//the callback
        session.openForRead(openRequest);
        return session;
    }
    return null;
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(_mActivity, requestCode, resultCode, data);
}

當我嘗試調用session.isPermissionGranted("user_birthday")false

我如何獲得user_birthday的許可權限

您之所以會空,是因為您需要Facebook審核過的APK才能獲得用戶的生日,如果您嘗試使用開發者的Facebook帳戶(已從中創建Facebook應用程序)登錄,那么您將獲得生日,但對於一般公眾訪問,您必須提供APK供Facebook審查。

讓我知道您是否有任何疑問。

對於生日和電子郵件地址,您不能先進入(登錄身份驗證)呼叫,而在此呼叫中,您僅獲得用戶常規配置文件的幾個參數。 如果要獲取出生日期/電子郵件/朋友列表的日期,則必須在具有特定權限的情況下進行單獨的郵寄驗證。 要獲得許可,請通過以下鏈接https://developers.facebook.com/docs/facebook-login/permissions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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