如何在不安全的协议上在instagram基本显示中设置redirect_uri

问题描述

我正试图遵循the documentation获取laravel的instagram用户个人资料信息和供稿。我没有办法在http:// localhost:8000 / callback_address上设置redirect_uri参数。如果我这样做,我会收到消息:

{
    "error_type": "OAuthException","code": 400,"error_message": "Invalid redirect_uri"
}

我试图在Facebook开发者控制台中添加有效的OAuth重定向URI,但是却收到一条错误消息,提示我应该使用HTTPS。我也尝试使用社交名媛,但我得到了同样的错误。奇怪的是,Facebook OAuth接受了HTTP重定向uri地址(认情况下,无需在开发人员控制台中编写),而Instagram Basic display则不接受。

这是重定向语句,产生上述错误

return redirect('https://api.instagram.com/oauth/authorize?client_id={my-client-id}&redirect_uri=https://localhost:8000/login/instagrambasic/callback&scope=user_profile,user_media&response_type=code')

我应该在开发中使用HTTP协议,有什么主意吗?我已经坚持了一天,眼睛流血了。

解决方法

您可能只需要urlencode()重定向URI。尝试这样的事情:

$query_data = array(
    'client_id' => '{my-client-id}','redirect_uri' => 'https://localhost:8000/login/instagrambasic/callback','scope' => 'user_profile,user_media','response_type' => 'code'
);

$url = sprintf('https://api.instagram.com/oauth/authorize?%s',http_build_query($query_data);

return redirect($uri);

如果您使用的是Socialite,将为您完成此操作,但请确保使用socialiteproviders/instagram-basic软件包,而不要使用旧的socialiteproviders/instagram软件包,因为这是API v1的版本,不再受支持。