rp3 auth working
This commit is contained in:
@@ -16,8 +16,8 @@ from io import BytesIO
|
||||
from rowsandall_app.settings import (
|
||||
C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET,
|
||||
STRAVA_CLIENT_ID, STRAVA_REDIRECT_URI, STRAVA_CLIENT_SECRET,
|
||||
rp3_CLIENT_ID, rp3_CLIENT_SECRET,
|
||||
rp3_REDIRECT_URI,rp3_CLIENT_KEY,
|
||||
RP3_CLIENT_ID, RP3_CLIENT_SECRET,
|
||||
RP3_REDIRECT_URI,RP3_CLIENT_KEY,
|
||||
RP3_CLIENT_ID, RP3_CLIENT_KEY, RP3_REDIRECT_URI, RP3_CLIENT_SECRET
|
||||
)
|
||||
|
||||
@@ -56,23 +56,25 @@ def do_refresh_token(refreshtoken):
|
||||
|
||||
# Exchange access code for long-lived access token
|
||||
def get_token(code):
|
||||
client_auth = requests.auth.HTTPBasicAuth(rp3_CLIENT_KEY, rp3_CLIENT_SECRET)
|
||||
client_auth = requests.auth.HTTPBasicAuth(RP3_CLIENT_KEY, RP3_CLIENT_SECRET)
|
||||
post_data = {
|
||||
"client_id":rp3_CLIENT_KEY,
|
||||
"client_id":RP3_CLIENT_KEY,
|
||||
"grant_type": "authorization_code",
|
||||
"code": code,
|
||||
"redirect_uri":rp3_REDIRECT_URI,
|
||||
"client_secret": rp3_CLIENT_SECRET,
|
||||
"redirect_uri":RP3_REDIRECT_URI,
|
||||
"client_secret": RP3_CLIENT_SECRET,
|
||||
}
|
||||
headers = {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
}
|
||||
|
||||
response = requests.post(
|
||||
"https://oauth.trainingpeaks.com/oauth/token",
|
||||
"https://rp3rowing-app.com/oauth/token",
|
||||
data=post_data,verify=False,
|
||||
)
|
||||
|
||||
print(response.json())
|
||||
|
||||
|
||||
try:
|
||||
token_json = response.json()
|
||||
|
||||
@@ -30,7 +30,10 @@
|
||||
Strava,
|
||||
{% endif %}
|
||||
{% if rower.runkeepertoken is not None and rower.runkeepertoken != '' %}
|
||||
Runkeeper.
|
||||
Runkeeper,
|
||||
{% endif %}
|
||||
{% if rower.rp3token is not None and rower.rp3token != '' %}
|
||||
RP3
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
@@ -77,7 +80,9 @@
|
||||
alt="connect with Polar" width="130"></a></p>
|
||||
|
||||
<p><a href="/rowers/me/garminauthorize"><img src="/static/img/garmin_badge_130.png"
|
||||
alt="connect with Garmin" with="130"></a></p>
|
||||
alt="connect with Garmin" width="130"></a></p>
|
||||
<p><a href="/rowers/me/rp3authorize"><img src="/static/img/logo-rp3-full-black.png"
|
||||
alt="connect with RP3" width="130"></a></p>
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -649,6 +649,7 @@ urlpatterns = [
|
||||
re_path(r'^me/sporttracksauthorize/$',views.rower_sporttracks_authorize,name='rower_sporttracks_authorize'),
|
||||
re_path(r'^me/underarmourauthorize/$',views.rower_underarmour_authorize,name='rower_underarmour_authorize'),
|
||||
re_path(r'^me/tpauthorize/$',views.rower_tp_authorize,name='rower_tp_authorize'),
|
||||
re_path(r'^me/rp3authorize/$',views.rower_rp3_authorize,name='rower_rp3_authorize'),
|
||||
re_path(r'^me/runkeeperauthorize/$',views.rower_runkeeper_authorize,name='rower_runkeeper_authorize'),
|
||||
re_path(r'^me/sporttracksrefresh/$',views.rower_sporttracks_token_refresh,name='rower_sporttracks_token_refresh'),
|
||||
re_path(r'^me/underarmourrefresh/$',views.rower_underarmour_token_refresh,name='rower_underarmoud_token_refresh'),
|
||||
|
||||
@@ -497,6 +497,21 @@ def rower_underarmour_authorize(request):
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# Underarmour Authorization
|
||||
@login_required()
|
||||
def rower_rp3_authorize(request):
|
||||
# Generate a random string for the state parameter
|
||||
# Save it for use later to prevent xsrf attacks
|
||||
|
||||
state = str(uuid4())
|
||||
params = {"client_id": RP3_CLIENT_KEY,
|
||||
"response_type": "code",
|
||||
"redirect_uri": RP3_REDIRECT_URI,
|
||||
}
|
||||
url = "https://rp3rowing-app.com/oauth/authorize/?" +urllib.parse.urlencode(params)
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# Underarmour Authorization
|
||||
@login_required()
|
||||
def rower_tp_authorize(request):
|
||||
@@ -874,7 +889,7 @@ def rower_process_rp3callback(request):
|
||||
url = reverse('rower_exportsettings_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
res = tpstuff.get_token(code)
|
||||
res = rp3stuff.get_token(code)
|
||||
|
||||
access_token = res[0]
|
||||
expires_in = res[1]
|
||||
@@ -882,12 +897,17 @@ def rower_process_rp3callback(request):
|
||||
expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
|
||||
|
||||
r = getrower(request.user)
|
||||
r.tptoken = access_token
|
||||
r.tptokenexpirydate = expirydatetime
|
||||
r.tprefreshtoken = refresh_token
|
||||
r.rp3token = access_token
|
||||
r.rp3tokenexpirydate = expirydatetime
|
||||
r.rp3refreshtoken = refresh_token
|
||||
|
||||
r.save()
|
||||
|
||||
successmessage = "Tokens stored. Good to go. Please check your import/export settings"
|
||||
messages.info(request,successmessage)
|
||||
url = reverse('rower_exportsettings_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# Process TrainingPeaks callback
|
||||
@login_required()
|
||||
def rower_process_tpcallback(request):
|
||||
|
||||
@@ -167,6 +167,7 @@ import rowers.underarmourstuff as underarmourstuff
|
||||
from rowers.underarmourstuff import underarmour_open
|
||||
import rowers.tpstuff as tpstuff
|
||||
import rowers.runkeeperstuff as runkeeperstuff
|
||||
import rowers.rp3stuff as rp3stuff
|
||||
import rowers.ownapistuff as ownapistuff
|
||||
from rowers.ownapistuff import TEST_CLIENT_ID, TEST_CLIENT_SECRET, TEST_REDIRECT_URI
|
||||
from rowsandall_app.settings import (
|
||||
@@ -179,6 +180,7 @@ from rowsandall_app.settings import (
|
||||
UNDERARMOUR_CLIENT_SECRET,UNDERARMOUR_CLIENT_KEY,
|
||||
RUNKEEPER_CLIENT_ID,RUNKEEPER_REDIRECT_URI,RUNKEEPER_CLIENT_SECRET,
|
||||
TP_CLIENT_ID,TP_REDIRECT_URI,TP_CLIENT_KEY,TP_CLIENT_SECRET,
|
||||
RP3_CLIENT_ID,RP3_REDIRECT_URI,RP3_CLIENT_KEY,RP3_CLIENT_SECRET,
|
||||
BRAINTREE_MERCHANT_ID,BRAINTREE_PUBLIC_KEY,BRAINTREE_PRIVATE_KEY,
|
||||
PAYMENT_PROCESSING_ON,
|
||||
RECAPTCHA_SITE_KEY, RECAPTCHA_SITE_SECRET
|
||||
|
||||
BIN
static/img/logo-rp3-full-black.png
Normal file
BIN
static/img/logo-rp3-full-black.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
Reference in New Issue
Block a user