Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

oauthlib.oauth2.rfc6749.errors.InvalidClientIdError: (invalid_request) Invalid client_id parameter value. #405

Open
andyspeak opened this issue Apr 8, 2020 · 2 comments

Comments

@andyspeak
Copy link

andyspeak commented Apr 8, 2020

Hello. Ive been tearing my hair out over this for hours and have finally conceded that it may be a bug as there was someone 5 years ago (#203) with a similar issue on here that turned out to be a bug. The parameters are all fine, and i even tried with the other grant type offered by netatmo but it always returns to the same error of invalid client_id parameter value.

import json
from flask import Flask, render_template, request, redirect, session, url_for
from flask.json import jsonify
import os
from requests_oauthlib import OAuth2Session

app = Flask(__name__)


client_id = "xxxx"
client_secret = "xxxx"
scope = 'read_station'
#grant_type = 'authorization_code'
grant_type = 'password'
password = 'xxxx'
authurl = 'https://api.netatmo.com/oauth2/authorize?'
token_url = 'https://api.netatmo.com/oauth2/token'

bolzano = 'lat_ne=46.3&lon_ne=11.3&lat_sw=46.2&lon_sw=11.2'

@app.route('/')
def auth():
    redirect_uri = url_for('.redir', _external = True)
    oauth = OAuth2Session(client_id, redirect_uri = redirect_uri,
                          scope = scope)
    authorization_url, state = oauth.authorization_url(authurl)
    session['oauth_state'] = state
    return redirect(authorization_url)

@app.route('/redir', methods = ["GET","POST"])
def redir():
    code = request.args.get('code')
    oauth = OAuth2Session(client_id, state=session['oauth_state'])
    #token = oauth.fetch_token(token_url, client_id = client_id, client_secret=client_secret,
    #code = code,scope = 'read_station',authorization_response = request.url)
    token = oauth.fetch_token(token_url, client_id = client_id, client_secret=client_secret, username = 'xxxx',password = 'xxxx',scope = 'read_station', authorization_response = request.url)
    session['oauth_token'] = token
    return redirect(url_for('.profile'))

@app.route('/profile', methods = ["GET","POST"])
def profile():
    oauth = OAuth2Session(client_id, token=session['oauth_token'])
    return jsonify(oauth.get('https://api.netatmo.com/api/getpublicdata?'+bolzano+'&filter=false').json())

if __name__ == "__main__":
    os.environ['DEBUG'] = "1"
    os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = "1"
    app.secret_key = os.urandom(24)
    app.run(debug=True)

Please help!

@ryanlovett
Copy link

I saw this using Zoom's api which returned

{"reason":"Invalid request : Redirect URI mismatch.","error":"invalid_request"}

but this bubbled up through requests-oauthlib as oauthlib.oauth2.rfc6749.errors.InvalidClientIdError: (invalid_request) Invalid client_id parameter value.

@carolinarsm
Copy link

My 2 cents.
Check passinginclude_client_id=True in the fetch_token call.
There is some logic being triggered if you don't set that flag and when not passing the argument auth explicitly. It will create an requests.auth.HTTPBasicAuth(client_id, client_secret) for you and send it in the request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants