Flutter:登录 Instagram 时未获取代码(Instagram 登录不起作用)
Posted
技术标签:
【中文标题】Flutter:登录 Instagram 时未获取代码(Instagram 登录不起作用)【英文标题】:Flutter : Not getting code while Instagram login (Instagram login not working) 【发布时间】:2019-07-30 11:23:25 【问题描述】:我正在使用 Flutter,我想在我的应用中实现使用 Instagram 登录。 所以我关注这个tutorial Instagram 登录,
我登录成功但没有获取用户详细信息,它正在打开重定向 URI (https://www.google.com/) 并且没有获取代码和访问令牌。
如果你知道什么,请帮助我。
注意:我使用 flutter_webview_plugin 来加载 webview 颤抖。
这是为 Instagram 登录打开 web 视图的代码 ->
我的日志 print("Code ========== Code"); 不再打印了
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】:终于,我居然找到了答案,This blog是对的,
我的错误是更改 重定向 URI
所以我将 Redirect URI https://www.google.com/ 更改为 http://localhost:8585 并且 instagram 登录有效。
Use http://localhost:8585 this Redirect URI for Instagram login
【讨论】:
没有。我还没有签入ios【参考方案2】:如果有人看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>
【讨论】:
以上是关于Flutter:登录 Instagram 时未获取代码(Instagram 登录不起作用)的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 Instagram API 登录获取用户电子邮件吗?
如何在不登录的情况下从 Instagram 获取 oauth 2 访问令牌(隐式流程)?