Exemplo n.º 1
0
def deauth(req, service):  # this is RK-specific
    deauthData = json.loads(req.body.decode("ASCII"))
    token = deauthData["access_token"]
    svc = Service.FromID(service)
    svcRecord = Service.GetServiceRecordWithAuthDetails(svc, {"Token": token})
    Service.DeleteServiceRecord(svcRecord)
    User.DisconnectService(svcRecord)
    return HttpResponse(status=200)
Exemplo n.º 2
0
    def RetrieveAuthorizationToken(self, req, level):
        from tapiriik.services import Service

        #  might consider a real OAuth client
        code = req.GET.get("code")
        params = {"grant_type": "authorization_code", "code": code, "client_id": RUNKEEPER_CLIENT_ID, "client_secret": RUNKEEPER_CLIENT_SECRET, "redirect_uri": WEB_ROOT + reverse("oauth_return", kwargs={"service": "runkeeper"})}

        response = requests.post("https://runkeeper.com/apps/token", data=urllib.parse.urlencode(params), headers={"Content-Type": "application/x-www-form-urlencoded"})
        if response.status_code != 200:
            raise APIException("Invalid code")
        token = response.json()["access_token"]

        # hacky, but also totally their fault for not giving the user id in the token req
        existingRecord = Service.GetServiceRecordWithAuthDetails(self, {"Token": token})
        if existingRecord is None:
            uid = self._getUserId(ServiceRecord({"Authorization": {"Token": token}}))  # meh
        else:
            uid = existingRecord.ExternalID

        return (uid, {"Token": token})
Exemplo n.º 3
0
    def RetrieveAuthorizationToken(self, req, level):
        from tapiriik.services import Service
        #  might consider a real OAuth client
        code = req.GET.get("code")
        params = {
            "grant_type":
            "authorization_code",
            "code":
            code,
            "client_id":
            SPORTTRACKS_CLIENT_ID,
            "client_secret":
            SPORTTRACKS_CLIENT_SECRET,
            "redirect_uri":
            WEB_ROOT +
            reverse("oauth_return", kwargs={"service": "sporttracks"})
        }

        response = requests.post(
            "https://api.sporttracks.mobi/oauth2/token",
            data=urllib.parse.urlencode(params),
            headers={"Content-Type": "application/x-www-form-urlencoded"})
        if response.status_code != 200:
            print(response.text)
            raise APIException("Invalid code")
        access_token = response.json()["access_token"]
        refresh_token = response.json()["refresh_token"]

        existingRecord = Service.GetServiceRecordWithAuthDetails(
            self, {"Token": access_token})
        if existingRecord is None:
            uid_res = requests.post(
                "https://api.sporttracks.mobi/api/v2/system/connect",
                headers={"Authorization": "Bearer %s" % access_token})
            uid = uid_res.json()["user"]["uid"]
        else:
            uid = existingRecord.ExternalID

        return (uid, {"RefreshToken": refresh_token})