Private
Public Access
1
0

rp3 auth working

This commit is contained in:
Sander Roosendaal
2021-01-26 20:26:51 +01:00
parent 4992405e5e
commit 6cedb7b5db
6 changed files with 43 additions and 13 deletions

View File

@@ -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()

View File

@@ -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 %}

View File

@@ -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'),

View File

@@ -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):

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB