我正在为 WordPress 开发一个插件,用户单击“在 Instagram 上登录”按钮来授权我的 Instagram 应用程序。授权后,该插件基本上只会从用户那里获取最新的 Instagram 照片并通过小部件显示。
这是我的插件如何工作的分步说明:
- 用户在 WordPress 设置页面上单击“在 Instagram 上登录”。
- 用户将被带到 Instagram 的授权屏幕(登录屏幕)
- 用户成功验证并批准了我的应用程序。
- Instagram 将用户重定向到我的Redirect URI。
- 文件“instagram-api-redirect.php”将获得“code”和“return_uri”参数。其中“代码”用于请求“访问令牌”。
- 它与“访问令牌”一起重定向回 WordPress 设置页面。
- 该插件将“访问令牌”存储到数据库以用于验证请求。
我遇到的问题是,我在第 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) 。
提前致谢!