0

我有一个与我从 React Native 应用程序收到的 access_token 相关的问题。React Native 应用程序使用 expo-facebook 库,当身份验证的弹出窗口消失时,将创建令牌并将其发送到后端 API。令牌由 logInWithReadPermissionsAsync 方法创建。

const { type, token, expirationDate, permissions, declinedPermissions, graphDomain } =
            await Facebook.logInWithReadPermissionsAsync({
              permissions: ["public_profile", "email"],
            });

我看到服务器在 http://localhost:8000/api/rest-auth/facebook/ 端点上收到了这个令牌,并将其发送到 Facebook 端点验证。问题出现在 Facebook 的响应中。我希望它应该对 Facebook 有效,但似乎出了点问题。

HTTP 400 Bad Request
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept

    {
        "non_field_errors": [
            "Incorrect value."
        ],
        "code": 400,
        "message": "Bad Request"
    }

我在 Graph API Explorer 中生成的访问令牌比在 React Native expo 应用程序中生成的令牌短(当我使用它时,它在后端应用程序中工作)。为什么这两个令牌不同?为什么它不能按我的预期工作?

4

1 回答 1

0

我发现问题出在哪里。我知道问题出在令牌上,一个好的方向是 Facebook 的回应。

{"error":{"message":"Invalid appsecret_proof provided in the API argument","type":"GraphMethodException","code":100}}.

在那之后,我意识到 React Native Expo 可能有问题。当您传递应用程序 ID 时,Expo-facebook 没有反应,它使用了在 expo 环境中定义的错误 APP ID (APP_ID=1696089354000816)。App-id 是在设置中设置的,也在

await Facebook.initializeAsync({
      appId: '<APP_ID>',
    });".

所以主要问题是我依赖了一个不属于我的应用程序的 access_token。

于 2022-02-01T19:41:40.123 回答