6

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

这是我的插件如何工作的分步说明:

  1. 用户在 WordPress 设置页面上单击“在 Instagram 上登录”。
  2. 用户将被带到 Instagram 的授权屏幕(登录屏幕)
  3. 用户成功验证并批准了我的应用程序。
  4. Instagram 将用户重定向到我的Redirect URI
  5. 文件“instagram-api-redirect.php”将获得“code”和“return_uri”参数。其中“代码”用于请求“访问令牌”。
  6. 它与“访问令牌”一起重定向回 WordPress 设置页面。
  7. 该插件将“访问令牌”存储到数据库以用于验证请求。

我遇到的问题是,我在第 5 步收到错误消息“重定向 URI 与原始重定向 URI 不匹配” 。当我从重定向 URI中删除“return_uri”查询参数时,它工作正常。

一些细节可能会有所帮助:

这是我的应用程序中的重定向 URI

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

这是我发送到 Instagram 的"/authorize"的重定向 URI

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

这是我发送到 Instagram 的“/authorize”的完整授权 URL :

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 -app&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) 。

提前致谢!

4

0 回答 0