oauthAccessToken method

Future<HttpClientResponse?> oauthAccessToken(
  1. String? tokenByAuthe,
  2. String? verifierByAuthe,
  3. String? secretByRequest
)

Twitterにアクセストークンを要求する 既に、tokenByAuthe(authentication)/verifierByAuthe/secretByRequestを取得済みでないとこの関数は通せない

Implementation

Future<HttpClientResponse?> oauthAccessToken(
  String? tokenByAuthe,
  String? verifierByAuthe,
  String? secretByRequest,
) async {
  if (null == tokenByAuthe || null == verifierByAuthe || null == secretByRequest) {
    return null;
  }
  DateTime dtNow = DateTime.now();
  int unixTimeSec = (dtNow.millisecondsSinceEpoch / 1000).round();
  var uuid = Uuid().v4();

  var parameters = {
    "oauth_consumer_key": _apiKey,
    "oauth_token": tokenByAuthe,
    "oauth_signature_method": _signatureMethod,
    "oauth_timestamp": unixTimeSec.toString(),
    "oauth_nonce": uuid.toString(),
    "oauth_verifier": verifierByAuthe,
    "oauth_version": "1.0"
  };

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

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

  var requestParams = _createRequestParams(parameters);
  var requestUrl = Uri.parse(TwitterAPIs.URL_OAUTH_ACCESS_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;
}