oauthRequestToken method

Future<HttpClientResponse> oauthRequestToken()

Twitterにリクエストトークンを要求する

Implementation

Future<HttpClientResponse> oauthRequestToken() async {
  DateTime dtNow = DateTime.now();
  int unixTimeSec = (dtNow.millisecondsSinceEpoch / 1000).round();
  var uuid = Uuid().v4();

  var parameters = {
    "oauth_callback": _callBackUrl,
    "oauth_consumer_key": _apiKey,
    "oauth_signature_method": _signatureMethod,
    "oauth_timestamp": unixTimeSec.toString(),
    "oauth_nonce": uuid.toString(),
    "oauth_version": "1.0"
  };

  // うまく行く時も、常に空だったような気がする。。。
  // このリクエストによって取得するものなので、ここでは空にすることが必要?
  // キーごと空にしてもうまく行くんじゃないの...
  // TODO: 調査
  var secretByRequest = "";

  var signature = _createSignature(
      _apiSecret, secretByRequest, "POST", parameters, TwitterAPIs.URL_OAUTH_REQUEST_TOKEN);

  if (signature != null) {
    parameters["oauth_signature"] = signature;
  }

  var requestParams = _createRequestParams(parameters);
  // ex. "oauth_callback=yuma25689.ToriaezuTukutterZero%3A%2F%2F,oauth_consumer_key=xjpku6jywPx6uyfTczlpNXEyE,oauth_nonce=6134F0AE-0BF7-44E0-B76B-13BD807EE4D7,oauth_signature=u8KQMiIPn3aHGhGwdIjRjT4%2BUEs%3D,oauth_signature_method=HMAC-SHA1,oauth_timestamp=1628826747,oauth_version=1.0"

  var requestUrl = Uri.parse(TwitterAPIs.URL_OAUTH_REQUEST_TOKEN);

  var client = HttpClient();
  var ret = client.postUrl(requestUrl).then((HttpClientRequest request) {
    request.headers.add("Authorization", "OAuth " + requestParams);
    // Then call close.
    return request.close();
  });
  return ret;
}