Флаттер: не получается получить код при входе в Instagram (вход в Instagram не работает) - PullRequest
0 голосов
/ 08 марта 2019

Я использую флаттер и хочу войти в Instagram с помощью моего приложения.Итак, я следую этому учебнику для входа в Instagram,

Я получаю успешный вход в систему, но не получаю данные пользователя, он открывает URI перенаправления (https://www.google.com/) и не получаю код и токен доступа.

Пожалуйста, помогите мне, если вы знаете что-либо.

Примечание: я использую flutter_webview_plugin для загрузки веб-просмотрав трепетании.

Вот код, открывающий веб-просмотр для Вход в Instagram ->

Мой журнал print ("Код ========== Код "); больше не печатает

  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;
}

Ответы [ 2 ]

1 голос
/ 30 июня 2019

Конфигурация 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>
0 голосов
/ 11 марта 2019

Наконец, я нашел ответ на самом деле, Этот блог был прав,

Моя ошибка меняется URI перенаправления

поэтому у меня есть изменение URI перенаправления https://www.google.com/ на http://localhost:8585, и вход в Instagram работает.

Use http://localhost:8585 this Redirect URI for Instagram login
...