如果原生应用已安装,则使用最新的Facebook SDK登录,对话框不会在Android中打开。

3

我正在使用最新版的Facebook-sdk进行Facebook登录

 implementation 'com.facebook.android:facebook-login:[5,6)'

尝试使用自定义按钮登录 Facebook 我在 Facebook-android-sdk 的 Github 问题中也遇到了这个错误 https://github.com/facebook/facebook-android-sdk/issues/580 这个问题是否已解决。

如果安装了 Facebook 原生应用程序,我想打开对话框,在此之前我使用LoginManager.getInstance().logOut()退出登录。

我使用默认的登录管理器LoginManager.getInstance(),然后进行登录和退出登录,但是当我检查令牌是否已注销时,例如AccessToken.getCurrentAccessToken(),它仍然存在。

以下是我的代码:

callbackManager =
    CallbackManager.Factory.create()

    LoginManager.getInstance().logOut()
loginManager = LoginManager.getInstance()

LoginManager.getInstance()
    .registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
        override fun onSuccess(loginResult: LoginResult) {
            val graphRequest = GraphRequest.newMeRequest(loginResult.accessToken)
            { jsonObj, _ ->

            }
            val parameters = Bundle()
            parameters.putString("fields", "id,name,email")
            graphRequest.parameters = parameters
            graphRequest.executeAsync()
        }

        override fun onCancel() {
        }

        override fun onError(error: FacebookException) {
            var msg = ""

        }
    })
loginManager.logInWithReadPermissions(
    this@SignUpActivity,
    listOf("email", "public_profile")
)

清单文件
<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:label="@string/app_name" />
1个回答

0

经过大量的研究和阅读许多答案,我终于找到了解决方案

如果您的应用程序处于开发模式,则生成开发密钥哈希

对于Windows,请使用以下命令:

  • openssl-for-windows openssl库下载openSSl并提取它。
  • 在C:/中创建一个名为OpenSSL的文件夹,并将提取的代码复制到其中。
  • 要生成开发密钥哈希,请在Java SDK文件夹中的命令提示符中运行以下命令
  • 将USERNAME更改为您的用户名
  • 此命令将生成一个28个字符的密钥哈希,该哈希唯一地属于您的开发环境。将其复制并粘贴到Facebook开发者网站的字段中

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME\.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary | "C:\OpenSSL\bin\openssl" base64


如果您的应用程序处于“发布”模式,则生成一个“发布密钥哈希”。 keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64 希望这能节省您的时间...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接