From 8db3d18219a8a3e3d1d9fb1e31ad53c13e644d2f Mon Sep 17 00:00:00 2001 From: Paul Woolcock Date: Fri, 31 Aug 2018 06:23:04 -0400 Subject: [PATCH] Make sure scopes are percent-encoded when making the URL --- src/registration.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/registration.rs b/src/registration.rs index d09c180..c195042 100644 --- a/src/registration.rs +++ b/src/registration.rs @@ -2,6 +2,7 @@ use std::borrow::Cow; use reqwest::{Client, RequestBuilder, Response}; use try_from::TryInto; +use url::percent_encoding::{utf8_percent_encode, DEFAULT_ENCODE_SET}; use apps::{App, AppBuilder}; use http_send::{HttpSend, HttpSender}; @@ -190,9 +191,11 @@ impl Registered { /// Returns the full url needed for authorisation. This needs to be opened /// in a browser. pub fn authorize_url(&self) -> Result { + let scopes = format!("{}", self.scopes); + let scopes: String = utf8_percent_encode(&scopes, DEFAULT_ENCODE_SET).collect(); let url = format!( "{}/oauth/authorize?client_id={}&redirect_uri={}&scope={}&response_type=code", - self.base, self.client_id, self.redirect, self.scopes, + self.base, self.client_id, self.redirect, scopes, ); Ok(url)