{"id":1386,"date":"2014-10-30T14:27:09","date_gmt":"2014-10-30T21:27:09","guid":{"rendered":"http:\/\/www.laurenwood.org\/anyway\/?p=1386"},"modified":"2014-10-30T14:27:09","modified_gmt":"2014-10-30T21:27:09","slug":"gae-and-oauth-2-in-the-2fa-world","status":"publish","type":"post","link":"https:\/\/www.laurenwood.org\/anyway\/2014\/10\/gae-and-oauth-2-in-the-2fa-world\/","title":{"rendered":"<span class=\"caps\">GAE<\/span> and OAuth 2 in the <span class=\"caps\">2FA<\/span>&nbsp;world"},"content":{"rendered":"<p>I\u2019ve been try\u00ading out Google App Engine, for which I signed up with the Google account where I just <a href=\"http:\/\/www.laurenwood.org\/anyway\/2014\/10\/2fa-the-aftermath\/\">enabled <span class=\"caps\">2FA<\/span><\/a>. Of course, that means chan\u00adging the way I update the uploaded tri\u00adal applic\u00ada\u00adtion; the stand\u00adard Google pass\u00adword has to give way to either a spe\u00adcif\u00adic applic\u00ada\u00adtion-based pass\u00adword, or OAu\u00adth 2. OAu\u00adth 2 is obvi\u00adously (to me) the bet\u00adter way to&nbsp;go.<\/p>\n<p>The <a href=\"https:\/\/cloud.google.com\/appengine\/docs\/python\/tools\/uploadinganapp#Python_Password-less_login_with_OAuth2\">doc\u00adu\u00adment\u00ada\u00adtion<\/a> is reas\u00adon\u00adably straight-for\u00adward. It even works as doc\u00adu\u00admented, assum\u00ading you\u2019re signed in with the right Google account on your default browser. My work\u00adflow is a little dif\u00adfer\u00adent \u2014 my main browser (Fire\u00adfox) is signed into my main Google account, and I sign into my oth\u00ader Google account (which I\u2019m using for this devel\u00adop\u00adment pro\u00adject) on Chrome. Copy\u00ading the <span class=\"caps\">URL<\/span> from Fire\u00adfox to Chrome to allow the appcfg applic\u00ada\u00adtion access to that Google account worked; it\u2019s refresh\u00ading to see. I get tired of web applic\u00ada\u00adtions that use some hid\u00adden JavaS\u00adcript magic and give you non\u00adsensic\u00adal res\u00adults if you copy a <span class=\"caps\">URL<\/span> from one browser to another.<\/p>\n<p>There\u2019s some\u00adthing appeal\u00ading about OAu\u00adth 2, even if it appears a little too magic\u00adal at times (a bit like git; when it works it\u2019s magic\u00adal, when it does\u00adn\u2019t, good&nbsp;luck!)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019ve been try\u00ading out Google App Engine, for which I signed up with the Google account where I just enabled <span class=\"caps\">2FA<\/span>. Of course, that means chan\u00adging the way I update the uploaded tri\u00adal applic\u00ada\u00adtion; the stand\u00adard Google pass\u00adword has to give way to either a spe\u00adcif\u00adic applic\u00ada\u00ad\u00adtion-based pass\u00adword, or OAu\u00adth 2. OAu\u00adth 2 is obvi\u00adously \u2026 <a href=\"https:\/\/www.laurenwood.org\/anyway\/2014\/10\/gae-and-oauth-2-in-the-2fa-world\/\" class=\"more-link\">Con\u00adtin\u00adue read\u00ading<span class=\"screen-reader-text\"> \u201c<span class=\"caps\">GAE<\/span> and OAu\u00adth 2 in the <span class=\"caps\">2FA<\/span>&nbsp;world\u201d<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wp_typography_post_enhancements_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"","activitypub_status":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-1386","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/www.laurenwood.org\/anyway\/wp-json\/wp\/v2\/posts\/1386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.laurenwood.org\/anyway\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.laurenwood.org\/anyway\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.laurenwood.org\/anyway\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.laurenwood.org\/anyway\/wp-json\/wp\/v2\/comments?post=1386"}],"version-history":[{"count":3,"href":"https:\/\/www.laurenwood.org\/anyway\/wp-json\/wp\/v2\/posts\/1386\/revisions"}],"predecessor-version":[{"id":1389,"href":"https:\/\/www.laurenwood.org\/anyway\/wp-json\/wp\/v2\/posts\/1386\/revisions\/1389"}],"wp:attachment":[{"href":"https:\/\/www.laurenwood.org\/anyway\/wp-json\/wp\/v2\/media?parent=1386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.laurenwood.org\/anyway\/wp-json\/wp\/v2\/categories?post=1386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.laurenwood.org\/anyway\/wp-json\/wp\/v2\/tags?post=1386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}