簡體   English   中英

安裝 Facebook 應用程序時 Facebook 登錄崩潰

[英]Facebook login crashing while Facebook app is installed

我嘗試使用最新的 facebook SDK 版本在我的 android 應用程序中實現 Facebook 登錄。 雖然它適用於未安裝 facebook 應用程序的手機,但是當手機安裝了 facebook 應用程序時,facebook 登錄崩潰了,錯誤如下

2019-12-12 14:06:27.321 19494-19523/com.abc.xyz E/GraphResponse: {HttpStatus: 400, errorCode: 100, subErrorCode: 33, errorType: GraphMethodException, errorMessage: Unsupported get request. Object with ID '572893573534105' does not exist, cannot be loaded due to missing permissions, or does not support this operation. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api}
2019-12-12 14:06:27.656 19494-19494/com.abc.xyz W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@3860e9a
2019-12-12 14:06:29.073 19494-19494/com.abc.xyz W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@fa88da4

我的 facebook 登錄代碼是 ->

var callbackManager: CallbackManager? = null
callbackManager = CallbackManager.Factory.create()
LoginManager.getInstance().registerCallback(callbackManager,
    object : FacebookCallback<LoginResult?> {
        override fun onSuccess(loginResult: LoginResult?) { // App code

        }

        override fun onCancel() { // App code

        }

        override fun onError(exception: FacebookException) { // App code
        }
    })

很感謝任何形式的幫助

解決方案:

構建.gradle

implementation 'com.facebook.android:facebook-login:5.5.1'
    implementation 'com.facebook.android:facebook-share:5.5.1'

java文件

 public void connectToFacebook() {
        if (LoginManager.getInstance() != null) {
            LoginManager.getInstance().logOut();
            LoginManager.getInstance().registerCallback(manager,
                    new FacebookCallback<LoginResult>() {
                        @Override
                        public void onSuccess(LoginResult loginResult) {
                            Log.e(TAG, "onSuccess : LoginResult" + loginResult.toString());
                            getAccountDetails(loginResult);
                        }

                        @Override
                        public void onCancel() {
                            Log.e(TAG, "onCancel: Login Cancel");
                        }

                        @Override
                        public void onError(FacebookException error) {
                            Snackbar.make(linearmain, "Something going wrong to connect to Facebook", Snackbar.LENGTH_LONG).show();
                            Log.e(TAG, "onError: Something wrong to connect to facebook" + error.getMessage());
                        }
                    });

            //login with permission.
            LoginManager.getInstance().logInWithPublishPermissions(this, Arrays.asList("manage_pages", "publish_pages", "publish_to_groups"));
        } else {
            Log.i(TAG, "connectToFacebook: LoginManager is Null");
        }
    }



public void getAccountDetails(final LoginResult loginResult) {

    if (loginResult != null && loginResult.getAccessToken() != null) {

        GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject object, GraphResponse response) {

                String accountDetailsResponse = String.valueOf(object);
                Log.i(TAG, "onCompleted: AccountDetailsResponse: " + accountDetailsResponse);


            }
        });

        Bundle permission_param = new Bundle();
        permission_param.putString("fields", "id, accounts, name, email, picture.width(120).height(120)");
        request.setParameters(permission_param);
        request.executeAsync();

    } else {
        Log.e(TAG, "onCancel: loginResult or AccessToken is null");
    }

}

顯現 :

 <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />

        <provider
            android:name="com.facebook.FacebookContentProvider"
            android:authorities="com.facebook.app.FacebookContentProvider494396834670647"
            android:exported="true" />

字符串文件

<string name="facebook_app_id">Your_app_Id</string> <!-- this id for live-->
    <string name="fb_login_protocol_scheme">fbYour_app_Id</string>
    <string name="fb_authorities">com.facebook.app.FacebookContentProviderYour_app_Id</string>

暫無
暫無

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

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