我正在为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) .
提前致谢!