gpt4 book ai didi

android - Facebook android sdk v4登录取消

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:57 24 4
gpt4 key购买 nike

我需要在我的应用程序中实现 facebook 登录。这是我的类(class):

list :

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" />
<provider android:authorities="com.facebook.app.FacebookContentProvider"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />

还有我的类(class):

public abstract class FaceBookActivityImpl extends BaseActivity {
private CallbackManager callbackManager;
private ShareDialog shareDialog;

@Override
protected void initView() {
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {

}

@Override
public void onCancel() {

}

@Override
public void onError(FacebookException e) {

}
});
FacebookSdk.addLoggingBehavior(LoggingBehavior.REQUESTS);
}

public CallbackManager getCalbackManager(){
return callbackManager;
}

public ShareDialog getShareDialog(){
if(shareDialog==null){
shareDialog = new ShareDialog(this);
// this part is optional
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
DebugLog.d("share success " + result.getPostId());
}

@Override
public void onCancel() {

}

@Override
public void onError(FacebookException e) {

}
});
}
return shareDialog;
}

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

当用户登录时,我需要检查 publish_actions 是否有类似的操作:

LoginManager.getInstance().registerCallback(((MainActivity) getContext()).getCalbackManager(), new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
DebugLog.d("login fb success "+loginResult.getRecentlyGrantedPermissions());
likeTopic();
}

@Override
public void onCancel() {
DebugLog.d("login fb cancel");
}

@Override
public void onError(FacebookException e) {
DebugLog.d("login fb error "+e.getMessage());
}
});
LoginManager.getInstance().logInWithPublishPermissions(((MainActivity) getContext()), Arrays.asList("publish_actions"));

但是,它总是取消:

DebugLog.d("login fb cancel");

我缺少什么,请帮助我,我研究了很长时间。非常感谢。

编辑:当它发生时,logcat(没有过滤器)显示:

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.login.LoginClient$Request" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)

最佳答案

我认为如果设备安装了 native Facebook 应用程序,就会出现此问题。尝试在未安装 Facebook 应用程序的设备上运行代码。

另外,尝试从 Facebook 开发者页面中删除该应用,然后重新添加。

在这里查看类似的问题

Can't login to Facebook if Facebook app is installed

Android Class not found : Didn't find class ... on path: DexPathList : link of class failed : **

更新 - 重要

您需要在FacebookContentProvider 末尾添加App Id,例如FacebookContentProvider1234,如果1234 是您的App Id。例如

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

关于android - Facebook android sdk v4登录取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29990024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com