如果本机应用程序安装然后对话框未在 android 中打开,请使用 Facebook 最新 sdk 登录
Login with Facebook latest sdk if native app install then dialog not open in android
我正在使用 最新的 Facebook-sdk 用于登录 Facebook
implementation 'com.facebook.android:facebook-login:[5,6)'
尝试使用 custom button
登录 facebook
我也在 Facebook-android-sdk
github 问题 https://github.com/facebook/facebook-android-sdk/issues/580 中收到此错误,此问题是否已解决。
如果安装了 Facebook 本机应用程序,我想打开对话框,首先我 logout
使用 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")
)
Manifest
文件
<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" />
最后,经过大量研究并阅读了许多答案,我找到了解决方案。
如果您的应用处于开发模式,则生成开发密钥哈希
对于 Windows 使用以下命令:
- 从 openssl-for-windows openssl 库下载 openSSL 并解压。
- 在 C:/ 中创建一个文件夹 - OpenSSL,然后将提取的代码复制到那里。
- 要生成 development 密钥哈希,运行 在 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
如果您的应用处于 Release 模式,则生成 Release Key Hash
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
希望这可以节省您的时间...
我正在使用 最新的 Facebook-sdk 用于登录 Facebook
implementation 'com.facebook.android:facebook-login:[5,6)'
尝试使用 custom button
登录 facebook
我也在 Facebook-android-sdk
github 问题 https://github.com/facebook/facebook-android-sdk/issues/580 中收到此错误,此问题是否已解决。
如果安装了 Facebook 本机应用程序,我想打开对话框,首先我 logout
使用 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")
)
Manifest
文件
<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" />
最后,经过大量研究并阅读了许多答案,我找到了解决方案。
如果您的应用处于开发模式,则生成开发密钥哈希
对于 Windows 使用以下命令:
- 从 openssl-for-windows openssl 库下载 openSSL 并解压。
- 在 C:/ 中创建一个文件夹 - OpenSSL,然后将提取的代码复制到那里。
- 要生成 development 密钥哈希,运行 在 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
如果您的应用处于 Release 模式,则生成 Release Key Hash
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
希望这可以节省您的时间...