Ios版本的应用程序可以工作,但Android失败,因为没有为React本机应用程序的AccessToken找到合适的构造函数

Ios版本的应用程序可以工作,但Android失败,因为没有为React本机应用程序的AccessToken找到合适的构造函数,android,react-native,fbsdk,react-native-fbsdk,Android,React Native,Fbsdk,React Native Fbsdk,如标题所述,此应用程序的Ios版本在物理设备上运行良好。然而,当我尝试在android设备上构建它时,我得到了一个错误 error: no suitable constructor found for AccessToken(String,String,String,<null>,<null>,<null>,<null>,<null>) constructor AccessToken.AccessToken(String,String,

如标题所述,此应用程序的Ios版本在物理设备上运行良好。然而,当我尝试在android设备上构建它时,我得到了一个错误

error: no suitable constructor found for AccessToken(String,String,String,<null>,<null>,<null>,<null>,<null>)
constructor AccessToken.AccessToken(String,String,String,Collection<String>,Collection<String>,AccessTokenSource,Date,Date,Date) is not applicable
(actual and formal argument lists differ in length)
constructor AccessToken.AccessToken(Parcel) is not applicable
(actual and formal argument lists differ in length)
更具体地说

if (configMap.hasKey("accessToken")) {
            graphRequest.setAccessToken(new AccessToken(
                configMap.getString("accessToken"),
                AccessToken.getCurrentAccessToken().getApplicationId(),
                AccessToken.getCurrentAccessToken().getUserId(),
                null,
                null,
                null,
                null,
                null));

我的Java技能不存在,所以我不知道如何解决这个问题。

我今天也遇到了同样的问题,将
react native fbsdk
升级到0.8.0似乎可以解决这个问题

我今天也遇到了这个问题,并通过修改包以使用最后一个参数-dataAccessExpirationTime解决了这个问题

new AccessToken(
            configMap.getString("accessToken"),
            AccessToken.getCurrentAccessToken().getApplicationId(),
            AccessToken.getCurrentAccessToken().getUserId(),
            null,
            null,
            null,
            null,
            null,
            null)
您将在FBGraphRequestModule.java和Utility.java文件中看到这个问题。
因此,请修复这两个文件。

我有相同的问题,我的理解是react native fbsdk v0.7.0没有锁定依赖项com.facebook.android:facebook android sdk的次要版本。请参见
node\u modules/react native fbsdk/android/
中的
compile'com.facebook.android:facebook android sdk:4+'
。Facebook发布了一个新版本
4.38.1
,之前已知的工作版本是
4.37.0
。由于未锁定次要版本,较新版本的
com.facebook.android:facebook安卓sdk:4
被拉下并导致损坏

升级到react native fbsdk v0.8.0和
com.facebook.android:facebook android sdk:4.38.1
会更改二进制软件包,迫使我们进行完整的应用程序更新(而不仅仅是通过代码推送更新UI内容)。我们试图限制二进制版本,因为它们更大,并且我们的用户不必被迫更新应用程序

强制解析
com.facebook.android:facebook-android-sdk:4+
的版本对我们有效

在root build.gradle文件中添加或合并以下内容

allprojects {
    configurations.all {
        resolutionStrategy {
            force 'com.facebook.android:facebook-android-sdk:4.37.0'
        }
    }
}

:本文描述了动态依赖的一些缺点。我建议当你包括一个新的模块时,锁定所有的动态依赖项。这将有助于确保每次重建都会产生可预测的输出。

我建议将
react native fbsdk
升级到0.8.0my Utility.java类似于
新的AccessToken(accessTokenMap.getString(“AccessToken”)、accessTokenMap.getString(“applicationID”)、accessTokenMap.getString(“用户ID”)、ReactArrayTokenMap.getArray(“权限”)、ReactArrayTokenList(accessTokenMap.getArray(“declinedPermissions”)、ReactArrayTokenMap.getString,accessTokenSource,expirationTime,lastRefreshTime,null
-您只需要在末尾添加
null
。您如何做到这一点…我的毕业生说
实现项目(“:react native fbsdk”)
如何指定版本?@ewizard您可以在
包.json
文件中指定版本,导入(即
实现项目(':react native fbsdk')
)不会更改。
allprojects {
    configurations.all {
        resolutionStrategy {
            force 'com.facebook.android:facebook-android-sdk:4.37.0'
        }
    }
}