Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Pinterest Oauth2访问令牌问题_Flutter_Dart_Oauth 2.0_Pinterest - Fatal编程技术网

Flutter Pinterest Oauth2访问令牌问题

Flutter Pinterest Oauth2访问令牌问题,flutter,dart,oauth-2.0,pinterest,Flutter,Dart,Oauth 2.0,Pinterest,我有一个颤振应用程序,我正试图与Pinterest集成,我有点卡住了 我有代码来请求访问令牌,虽然代码确实获得了访问令牌,但该令牌似乎没有用处。我使用该令牌调用的任何API都会产生308,如果我转到Pinterest开发人员站点并调试令牌,那么它看起来如下所示: Future<String> _login() async { SharedPreferences prefs = await SharedPreferences.getInstance(); acce

我有一个颤振应用程序,我正试图与Pinterest集成,我有点卡住了

我有代码来请求访问令牌,虽然代码确实获得了访问令牌,但该令牌似乎没有用处。我使用该令牌调用的任何API都会产生308,如果我转到Pinterest开发人员站点并调试令牌,那么它看起来如下所示:

  Future<String> _login() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();

    accessToken = null;
    if (accessToken == null) {
//      accessToken = prefs.get(ACCESS_TOKEN_KEY);

      //If we don't have an existing access token, get a new one.
      if (accessToken == null) {
        final appId = "myappid";
        final secret =
            "mysecret";

        final url = Uri.https('api.pinterest.com', 'oauth', {
          'response_type': 'code',
          'client_id': appId,
          'redirect_uri': "pdk<myappid>://",
          'state': 'someBogusStuff',
          'scope': 'read_public,write_public',
        });

        final result = await FlutterWebAuth.authenticate(
            url: url.toString(), callbackUrlScheme: 'pdk<myappid>');

        print(result);

        final tokenEndpoint = Uri.https('api.pinterest.com', 'v1/oauth/token');

        // Use the code to get an access token
        final response = await http.post(tokenEndpoint, body: {
          'client_id': appId,
          'client_secret': secret,
          'grant_type': 'authorization_code',
          'code': Uri
              .parse(result)
              .queryParameters['code'],
        });

        if (response.statusCode != 200) {
          return response.body;
        }

        var decodedResponse = jsonDecode(response.body);
        print(decodedResponse);
        accessToken = decodedResponse['access_token'];

        //Save the access token
        prefs.setString(ACCESS_TOKEN_KEY, accessToken);
      }
    }

    return getMe(accessToken);
  }

  Future<String> getMe(String token) async {
    final url =
        Uri.https('api.pinterest.com', 'v1/me', {'access_token': token});

    Completer<String> completer = Completer();
    String result;
    http.get(url, headers: {'User-Agent': 'PDK 1.0'}).then((response) {
      print(response.statusCode);
      result = response.body;
    }).whenComplete(() => completer.complete(result));

    return completer.future;
  }

所以,就像令牌没有作用域,并且不是为实际应用程序发布的,这很奇怪。我的代码如下所示:

  Future<String> _login() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();

    accessToken = null;
    if (accessToken == null) {
//      accessToken = prefs.get(ACCESS_TOKEN_KEY);

      //If we don't have an existing access token, get a new one.
      if (accessToken == null) {
        final appId = "myappid";
        final secret =
            "mysecret";

        final url = Uri.https('api.pinterest.com', 'oauth', {
          'response_type': 'code',
          'client_id': appId,
          'redirect_uri': "pdk<myappid>://",
          'state': 'someBogusStuff',
          'scope': 'read_public,write_public',
        });

        final result = await FlutterWebAuth.authenticate(
            url: url.toString(), callbackUrlScheme: 'pdk<myappid>');

        print(result);

        final tokenEndpoint = Uri.https('api.pinterest.com', 'v1/oauth/token');

        // Use the code to get an access token
        final response = await http.post(tokenEndpoint, body: {
          'client_id': appId,
          'client_secret': secret,
          'grant_type': 'authorization_code',
          'code': Uri
              .parse(result)
              .queryParameters['code'],
        });

        if (response.statusCode != 200) {
          return response.body;
        }

        var decodedResponse = jsonDecode(response.body);
        print(decodedResponse);
        accessToken = decodedResponse['access_token'];

        //Save the access token
        prefs.setString(ACCESS_TOKEN_KEY, accessToken);
      }
    }

    return getMe(accessToken);
  }

  Future<String> getMe(String token) async {
    final url =
        Uri.https('api.pinterest.com', 'v1/me', {'access_token': token});

    Completer<String> completer = Completer();
    String result;
    http.get(url, headers: {'User-Agent': 'PDK 1.0'}).then((response) {
      print(response.statusCode);
      result = response.body;
    }).whenComplete(() => completer.complete(result));

    return completer.future;
  }
但它不起作用。我做错了什么