[英]Facebook login crashing while Facebook app is installed
I tried to implement Facebook login in my android app with the latest facebook SDK version.我尝试使用最新的 facebook SDK 版本在我的 android 应用程序中实现 Facebook 登录。 While it is working for mobile phones with facebook app not installed, but the facebook login is crashing while the phone has facebook app installed with the error as
虽然它适用于未安装 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
My facebook-login code is ->我的 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
}
})
Any help is very much appreciated很感谢任何形式的帮助
Solution:解决方案:
Build.gradle
构建.gradle
implementation 'com.facebook.android:facebook-login:5.5.1'
implementation 'com.facebook.android:facebook-share:5.5.1'
java File
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");
}
}
Manifest :
显现 :
<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.xml
字符串文件
<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.