Флаттер: не получается получить код при входе в Instagram (вход в Instagram не работает)
Я использую флаттер, и я хочу добиться входа в Instagram в моем приложении. Итак, я следую этому уроку для входа в Instagram,
Я получаю успешный вход в систему, но не получаю информацию о пользователе, он открывает URI перенаправления ( https://www.google.com/) и не получает код и токен доступа.
Пожалуйста, помогите мне, если вы знаете что-нибудь.
Примечание: я использую flutter_webview_plugin для загрузки веб-просмотра во флаттере.
Вот код, открывающий веб-просмотр для входа в Instagram ->
Печать моего журнала ("Код ========== Код"); больше не будет печатать
Future<Token> getToken(String appId, String appSecret) async {
Stream<String> onCode = await _server();
print("_server ========== _server");
String url =
"https://api.instagram.com/oauth/authorize?client_id=$appId&redirect_uri=https://www.google.com/&response_type=code";
final flutterWebviewPlugin = new FlutterWebviewPlugin();
flutterWebviewPlugin.launch(url);
final String code = await onCode.first;
print("Code ========== Code");
print("Code -> "+code);
final http.Response response = await http.post(
"https://api.instagram.com/oauth/access_token",
body: {"client_id": appId, "redirect_uri": "https://www.google.com/", "client_secret": appSecret,
"code": code, "grant_type": "authorization_code"});
flutterWebviewPlugin.close();
return new Token.fromMap(json.decode(response.body));
}
Future<Stream<String>> _server() async {
final StreamController<String> onCode = new StreamController();
HttpServer server =
await HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 8585);
server.listen((HttpRequest request) async {
final String code = request.uri.queryParameters["code"];
request.response
..statusCode = 200
..headers.set("Content-Type", ContentType.HTML.mimeType)
..write("<html><h1>You can now close this window</h1></html>");
await request.response.close();
await server.close(force: true);
onCode.add(code);
await onCode.close();
});
return onCode.stream;
}
1 ответ
Конфигурация iOS, если кто ищет, добавьте код ниже в Info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost:8585</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
Наконец, я нашел ответ на самом деле, этот блог был прав,
Моя ошибка - изменение URI перенаправления
поэтому я изменил URI перенаправления https://www.google.com/ на http://localhost:8585/, и вход в Instagram работает.
Use http://localhost:8585 this Redirect URI for Instagram login