Instagram OEmbed - OAuthException 200 提供有效的应用程序 ID

Instagram OEmbed - OAuthException 200 Provide valid app ID

我不断收到错误消息:

{message: '(#200) Provide valid app ID', type: 'OAuthException', code: 200,...

我可以使用 curl 并通过输入 URL 获得 HTTP Get 响应,但是当尝试在 Javascript SDK 中使用完全相同的 url 时,我收到之前的错误提示。

以下是我的JS脚本。

var pageAccessToken = 'APP_ID|CLIENT_ID';
$(document).ready(function() {
$.ajaxSetup({ cache: true });
  $.getScript('https://connect.facebook.net/en_US/sdk.js', function(){
    FB.init({
        appId      : 'APP_ID',
        xfbml      : true,
        version    : 'v13.0'
      });
    FB.getLoginStatus(function(response){
        FB.api(
            '/instagram_oembed',
            'GET',
            {"url":"https://graph.facebook.com/v13.0/instagram_oembed?url=INSTAGRAMURL&access_token=" + pageAccessToken},
            function(response) {
                console.log(response);
                InstagramPage.innerHTML = response.html;
            }
          );
          console.log(response);
        });
    });
});

有什么想法吗?

我的应用程序已上线(我可以从 HTTP Get 获取正确的信息)

编辑:

正如 CBroe 所说,我将我的代码更改为以下内容,现在可以使用了。

FB.getLoginStatus(function(response){
        FB.api(
            '/instagram_oembed',
            'GET',
            {
                "url":"INSTAGRAMURL",
                access_token: pageAccessToken
            },
            function(response) {
                console.log(response);
                InstagramPage.innerHTML = response.html;
            }
          );
          console.log(response);
        });
    });

因此,在 {} 中包含这两个参数是可行的。我最初尝试使用 2 {},但没有用。

然而,CBroe,在facebook docs中可以看到:https://developers.facebook.com/docs/facebook-login/guides/access-tokens

我可以在 javascript 中使用 Client_ID。

添加 - 在我将其写入 PHP 之后(使用 PHP SDK for facebook),解决客户端 ID 在 JS 中可读的问题:

<?php
require_once __DIR__ . '/assets/src/Facebook/autoload.php'; // change path as needed
$fb = new \Facebook\Facebook([
    'app_id' => 'APP-ID',
    'app_secret' => 'APP-Secret',
    'default_graph_version' => 'v13.0'
    //'default_access_token' => '{access-token}', // optional
  ]);
  /* PHP SDK v5.0.0 */
/* make the API call */
try {
    // Returns a `Facebook\FacebookResponse` object
    $response = $fb->get(
        '/instagram_oembed?url=INSTAGRAMURL',
        'APP-ID|APP-ID_or_Client-ID'
    );
  } catch(Facebook\Exceptions\FacebookResponseException $e) {
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
  } catch(Facebook\Exceptions\FacebookSDKException $e) {
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
  }
  $Node = $response->getDecodedBody();
  echo <<< EOF
    <div class=""InstagramResults"> 
  EOF;
    print_r($Node["html"]);
    echo <<< EOF
    </div>
    EOF;
?>
´´´

您正在尝试将 instagram_oembed 端点 URL 发送到 instagram_oembed 端点。 url 参数只能是 INSTAGRAMURL.

如果您必须传递不同于 SDK 内部使用的访问令牌,则需要将其作为附加参数传递给端点。

请注意,您永远不应在公开可用的 client-side 代码中公开您的 client_id(实际上是应用程序机密)。每个人都可以从那里窃取它,并且会为您的应用程序提供有效的应用程序访问令牌。