Title: oauth2client on GCE throws AttributeError no attribute redirect_uri · Issue #342 · 1ap/google-api-python-client · GitHub
Open Graph Title: oauth2client on GCE throws AttributeError no attribute redirect_uri · Issue #342 · 1ap/google-api-python-client
X Title: oauth2client on GCE throws AttributeError no attribute redirect_uri · Issue #342 · 1ap/google-api-python-client
Description: [Use this form for both apiclient and oauth2client issues] What steps will reproduce the problem? 1. I am porting an Python 2.7 script to a new GCE 2. The script runs on local laptop and connects to BigQuery perfectly 3. The script throw...
Open Graph Description: [Use this form for both apiclient and oauth2client issues] What steps will reproduce the problem? 1. I am porting an Python 2.7 script to a new GCE 2. The script runs on local laptop and connects t...
X Description: [Use this form for both apiclient and oauth2client issues] What steps will reproduce the problem? 1. I am porting an Python 2.7 script to a new GCE 2. The script runs on local laptop and connects t...
Opengraph URL: https://github.com/1ap/google-api-python-client/issues/342
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"oauth2client on GCE throws AttributeError no attribute redirect_uri","articleBody":"```\n[Use this form for both apiclient and oauth2client issues]\n\nWhat steps will reproduce the problem?\n1. I am porting an Python 2.7 script to a new GCE\n2. The script runs on local laptop and connects to BigQuery perfectly\n3. The script throws error when run on GCE instance\n\nWhat is the expected output? What do you see instead?\nWhen run on local laptop all is good. But, when run on a new GCE which I build \n2 hours ago with the latest client API, the script throws the following error \nafter the client creates the flow:\n\n\n_HAVE_FLOW: True\nTEST _HAVE_FLOW: True\nhave storage, next use it to retrieve credential from file: \nbigquery_credentials.dat\nERROR - credentials is None\nRun oauth2 flow with default arguments\n - Write_CVS_Records_to_BigQuery() Unexpected error: \u003ctype 'exceptions.AttributeError'\u003e\nWrite_CVS_Records_to_BigQuery() AttributeError: 'NoneType' object has no \nattribute 'redirect_uri'\nCLOUDSDK_CONFIG: /home/.../.config/gcloud\nGOOGLE_APPLICATION_CREDENTIALS: \nclient_secret_Xkjduoiyewryq3.apps.googleusercontent.com.json\nGCLOUD_DATASET_ID: applied-algebra-93003\n------------------------------------------------------------\nTraceback (most recent call last):\n File \"/dump/CI_SA_load_bq.py\", line 221, in Write_CVS_Records_to_BigQuery\n credentials = tools.run_flow(_FLOW, storage, tools.argparser.parse_args([]))\n File \"/usr/lib/python2.7/site-packages/oauth2client/util.py\", line 137, in positional_wrapper\n return wrapped(*args, **kwargs)\n File \"/usr/lib/python2.7/site-packages/oauth2client/tools.py\", line 190, in run_flow\n flow.redirect_uri = oauth_callback\nAttributeError: 'NoneType' object has no attribute 'redirect_uri'\n------------------------------------------------------------\nTraceback (most recent call last):\n File \"/dump/CI_SA_load_bq.py\", line 266, in \u003cmodule\u003e\n Write_CVS_Records_to_BigQuery()\n File \"/dump/CI_SA_load_bq.py\", line 221, in Write_CVS_Records_to_BigQuery\n credentials = tools.run_flow(_FLOW, storage, tools.argparser.parse_args([]))\n File \"/usr/lib/python2.7/site-packages/oauth2client/util.py\", line 137, in positional_wrapper\n return wrapped(*args, **kwargs)\n File \"/usr/lib/python2.7/site-packages/oauth2client/tools.py\", line 190, in run_flow\n flow.redirect_uri = oauth_callback\nAttributeError: 'NoneType' object has no attribute 'redirect_uri'\n ~]$ \n\nWhat version of the product are you using? On what operating system?\nThe latest verion installed by pip. The most recent Centos version of GCE\n\nPlease provide any additional information below.\n\nMore than likely this is a configuration problem on the GCE; I've likely missed \nadding some setting required on a GCE instance. Here's the 2 suspect methods \nrelated to the AttributeError:\n\n_SECRET_FILE_NAME='client_secret_devgce2.apps.googleusercontent.com.json'\n_REDIRECT_URI='urn:ietf:wg:oauth:2.0:oob'\n\n# Set up flow object to be used for authenticating the client\ndef Get_Client_Flow():\n try:\n if os.path.exists(_SECRET_FOLDER_NAME):\n print \"_SECRET_FOLDER_NAME: %s exists\"%(str(_SECRET_FOLDER_NAME))\n _SECRET_FILE = os.path.join(_SECRET_FOLDER_NAME,_SECRET_FILE_NAME)\n if os.path.isfile(_SECRET_FILE): \n print \"_SECRET_FILE: %s exists\"%(_SECRET_FILE) \n _HAVE_SECRET_FILE=True\n _FLOW = flow_from_clientsecrets(_SECRET_FILE,\n scope='https://www.googleapis.com/auth/bigquery',\n redirect_uri=_REDIRECT_URI)\n if not _FLOW==None:\n _HAVE_FLOW.append(True)\n print (\"_HAVE_FLOW: %s\")%(_HAVE_FLOW[0])\n else:\n _HAVE_FLOW.append(False)\n print (\"_HAVE_FLOW: %s\")%(_HAVE_FLOW[0])\n else:\n print \"_SECRET_FILE: %s does not exist\"%(str(_SECRET_FILE)) \n else:\n print \"_SECRET_FOLDER_NAME: %s does not exist\"%(str(_SECRET_FOLDER_NAME))\n\n except Exception, inst:\n print \"\\n - Get_Client_Flow() Unexpected error: %s\"%(str(sys.exc_info()[0]))\n if isinstance(inst,ValueError):\n print \"Get_Client_Flow() - ValueError: %s\\n\"%(inst.message)\n if isinstance(inst,AttributeError):\n print \"Get_Client_Flow() - AttributeError: %s\\n\"%(inst.message)\n if isinstance(inst,TypeError):\n print \"Get_Client_Flow() - TypeError: %s\\n\"%(inst.message) \n #print \"\\nPYTHONPATH: %s\" % (os.environ['PYTHONPATH'])\n print \"CLOUDSDK_CONFIG: %s\" % (os.environ['CLOUDSDK_CONFIG'])\n print \"GOOGLE_APPLICATION_CREDENTIALS: %s\"%(os.environ['GOOGLE_APPLICATION_CREDENTIALS'])\n print \"GCLOUD_DATASET_ID: %s\"%(os.environ['GCLOUD_DATASET_ID']) \n print '-'*60\n traceback.print_exc(file=sys.stdout)\n print '-'*60 \n raise \n\n\ndef Write_CVS_Records_to_BigQuery():\n try:\n print \"\\n Write_CVS_Records_to_BigQuery()\"\n '''\n Connect to BigQuery Service API\n '''\n Get_Client_Flow()\n\n if _HAVE_FLOW[0]:\n print (\"TEST _HAVE_FLOW: %s\")%(_HAVE_FLOW[0])\n #_FLOW.redirect_uri = _REDIRECT_URI\n\n # GET oauth2client STORAGE\n storage = Storage('bigquery_credentials.dat')\n if storage is None:\n print \"storage is None, error creating means for retrieving credential from file: %s\"%('bigquery_credentials.dat')\n else:\n print \"have storage, next use it to retrieve credential from file: %s\"%('bigquery_credentials.dat')\n credentials = storage.get()\n if credentials is None:\n print \"ERROR - credentials is None\"\n\n if credentials is None or credentials.invalid:\n print \"Run oauth2 flow with default arguments\"\n # Run oauth2 flow with default arguments.\n credentials = tools.run_flow(_FLOW, storage, tools.argparser.parse_args([]))\n\n # create the HTTP object to handle your requests, and authorize with your credentials\n http = httplib2.Http()\n http = credentials.authorize(http)\n\n # create the service object for interacting with BigQuery\n _BIGQUERY_SERVICE = build('bigquery', 'v2', http=http)\n\n print (\"BEGIN call to loadTable()\")\n try:\n #print \"did not call loadTable()\"\n loadTable(_BIGQUERY_SERVICE, _PROJECT_NUMBER, _BIGQUERY_DATASET_ID, _TARGET_TABLE_ID, _SOURCE_CSV)\n\n except HttpError as err:\n print 'Write_CVS_Records_to_BigQuery() HttpError:', pprint.pprint(err.resp)\n print 'Write_CVS_Records_to_BigQuery()- HttpError content: %s: '%(err.content)\n print 'Write_CVS_Records_to_BigQuery() HttpError uri - loadTable(): ', pprint.pprint(err.uri)\n\n except AccessTokenRefreshError:\n print (\"Write_CVS_Records_to_BigQuery() - Credentials have been revoked or expired, please re-run\"\n \"the application to re-authorize\")\n else:\n print (\"TEST _HAVE_FLOW: %s\")%(_HAVE_FLOW[0])\n\n except Exception, inst:\n print \"\\n - Write_CVS_Records_to_BigQuery() Unexpected error: %s\"%(str(sys.exc_info()[0]))\n if isinstance(inst,ValueError):\n print \"Write_CVS_Records_to_BigQuery() ValueError: %s\\n\"%(inst.message)\n if isinstance(inst,AttributeError):\n print \"Write_CVS_Records_to_BigQuery() AttributeError: %s\\n\"%(inst.message)\n if isinstance(inst,TypeError):\n print \"Write_CVS_Records_to_BigQuery()TypeError: %s\\n\"%(inst.message) \n #print \"\\nPYTHONPATH: %s\" % (os.environ['PYTHONPATH'])\n print \"CLOUDSDK_CONFIG: %s\" % (os.environ['CLOUDSDK_CONFIG'])\n print \"GOOGLE_APPLICATION_CREDENTIALS: %s\"%(os.environ['GOOGLE_APPLICATION_CREDENTIALS'])\n print \"GCLOUD_DATASET_ID: %s\"%(os.environ['GCLOUD_DATASET_ID']) \n print '-'*60\n traceback.print_exc(file=sys.stdout)\n print '-'*60 \n raise\n\n This is not likely, in my view, a bug with the API, but a matter of an omitted setting in the code or in the .bashrc file. The only difference in the code that runs on the laptop and the code that fails to run on the GCE is the new addition of _REDIRECT_URI (when creating the flow object)\n\nAny suggestions to fix this mis-configuration are appreciated.\n\n\n```\n\nOriginal issue reported on code.google.com by `ccliff...@archipelagois.com` on 12 May 2015 at 9:57\n","author":{"url":"https://github.com/GoogleCodeExporter","@type":"Person","name":"GoogleCodeExporter"},"datePublished":"2016-03-28T19:47:36.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/342/google-api-python-client/issues/342"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:fcf97245-890a-2c8e-8364-fd3bf3c727b0 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9856:17F0C5:11EFF5D:17E30F0:697D14B8 |
| html-safe-nonce | cee78a79e17e1e4970c22528e35b75066952d987d15e57ab2cb13099264b854c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5ODU2OjE3RjBDNToxMUVGRjVEOjE3RTMwRjA6Njk3RDE0QjgiLCJ2aXNpdG9yX2lkIjoiMzI1MTM3MzA5NDc2MDk0NDgyNCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 68c00cd1109b8508ca153bd46e8d6aea63c829ca1794984f1e2c34e461aca257 |
| hovercard-subject-tag | issue:144065916 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/1ap/google-api-python-client/342/issue_layout |
| twitter:image | https://opengraph.githubassets.com/811a0a71252e8f35c0be927dfca5b66c508ecd11e33dcdb12d1fefe72bd898b2/1ap/google-api-python-client/issues/342 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/811a0a71252e8f35c0be927dfca5b66c508ecd11e33dcdb12d1fefe72bd898b2/1ap/google-api-python-client/issues/342 |
| og:image:alt | [Use this form for both apiclient and oauth2client issues] What steps will reproduce the problem? 1. I am porting an Python 2.7 script to a new GCE 2. The script runs on local laptop and connects t... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | GoogleCodeExporter |
| hostname | github.com |
| expected-hostname | github.com |
| None | 6bac6431e041e40aadf6b728ae7d4714d3e9db06146c32859d7f755bfd99f370 |
| turbo-cache-control | no-preview |
| go-import | github.com/1ap/google-api-python-client git https://github.com/1ap/google-api-python-client.git |
| octolytics-dimension-user_id | 12863663 |
| octolytics-dimension-user_login | 1ap |
| octolytics-dimension-repository_id | 54918735 |
| octolytics-dimension-repository_nwo | 1ap/google-api-python-client |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 54918735 |
| octolytics-dimension-repository_network_root_nwo | 1ap/google-api-python-client |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 16471c97de653e844cc3021141a92460ac261244 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width