我正在为WordPress创建一个插件,用户点击“登录Instagram”按钮来授权我的Instagram应用程序 . 授权后,插件基本上只会从用户那里获取最新的Instagram照片并通过小部件显示 .

以下是我的插件如何工作的一步一步:

  • 用户在WordPress设置页面上单击"Sign in on Instagram" .

  • 用户将被带到Instagram的授权屏幕(登录屏幕)

  • 用户成功验证并批准了我的应用 .

  • Instagram将用户重定向到我的 Redirect URI .

  • 文件"instagram-api-redirect.php"将同时获得"code"和"return_uri"参数 . "code"用于请求"access token"的位置 .

  • 它与"access token"一起重定向回WordPress设置页面 .

  • 插件将"access token"存储到数据库以用于验证请求 .

我遇到的问题是我在步骤5收到错误消息"Redirect URI doesn't match original redirect URI" . 当我从 Redirect URI 中删除"return_uri"查询参数时,它工作正常 .

一些细节可能有所帮助

这是我的应用程序中的 Redirect URI

http:// mysite.com/plugins/pulp_instagram/instagram-api-redirect.php

这是我的 Redirect URI ,我发送到Instagram的 "/authorize"

http:// mysite.com/plugins/pulp_instagram/instagram-api-redirect.php?return_uri=http:// localhost / instagram-app

这是我发送给Instagram的完整授权网址 "/authorize"

https:// api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=http:// mysite.com/plugins/pulp_instagram/instagram-api-redirect.php?return_uri=http:// localhost / Instagram的应用内&RESPONSE_TYPE =代码

这是URL响应:

http:// mysite.com/plugins/pulp_instagram/instagram-api-redirect.php?return_uri=http:// localhost / instagram-app&code = 557d15dacd0d40459edf70aa159476de

这是“instagram-api-redirect.php”文件的完整代码:

<?php 

// the redirect uri
$return_uri = $_GET['return_uri'];

require 'instagram.class.php';

// Initialize class
$instagram = new Instagram(array(
  'apiKey'      => 'CLIENT-ID',
  'apiSecret'   => 'CLIENT-SECRET',
  'apiCallback' => 'http://mysite.com/plugins/pulp_instagram/instagram-api-redirect.php'
));

// Receive OAuth code parameter
$code = $_GET['code'];

// Check whether the user has granted access
if (true === isset($code)) {

    // Receive OAuth token object
    $data = $instagram->getOAuthToken($code);
    print_r($data); 
} else {

  // Check whether an error occurred
  if (true === isset($_GET['error'])) {
    echo 'An error occurred: '.$_GET['error_description'];
  }

}
?>

另外,我正在使用cosenary中的"Instagram PHP API"类(instagram.class.php) .

提前致谢!