<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>ruby on rails omniauth facebook google oauth on random thoughts</title><link>https://awesomeprogrammer.com/categories/ruby-on-rails-omniauth-facebook-google-oauth/</link><description>Recent content in ruby on rails omniauth facebook google oauth on random thoughts</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 09 Dec 2012 00:00:00 +0000</lastBuildDate><atom:link href="https://awesomeprogrammer.com/categories/ruby-on-rails-omniauth-facebook-google-oauth/index.xml" rel="self" type="application/rss+xml"/><item><title>Dealing with Omniauth redirect_uri_mismatch (invalid port number gotcha)</title><link>https://awesomeprogrammer.com/blog/2012/12/09/dealing-with-omniauth-redirect-uri-mismatch-invalid-port-number-gotcha/</link><pubDate>Sun, 09 Dec 2012 00:00:00 +0000</pubDate><guid>https://awesomeprogrammer.com/blog/2012/12/09/dealing-with-omniauth-redirect-uri-mismatch-invalid-port-number-gotcha/</guid><description><![CDATA[<p>Lately I had some problems with invalid callback url I was getting on my production server (shared host). Omniauth in response included port used internally by nginx (eg. this could be the case eg. when you have varnish in front of you web server) - after browsing the source code of omniauth gem I have found out that you can easily fix if without even touching webserver configuration (and I didn&rsquo;t had access to it anyway :P).</p>
<p>So take a look at <code>strategy.rb</code>, you have there method <code>full_host</code> and as you see below in the first place it tries to fetch it&rsquo;s value from user&rsquo;s configuration.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ruby" data-lang="ruby"><span style="display:flex;"><span><span style="color:#75715e"># omniauth/lib/omniauth/strategy.rb</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">full_host</span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> <span style="color:#66d9ef">OmniAuth</span><span style="color:#f92672">.</span>config<span style="color:#f92672">.</span>full_host
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">when</span> String
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">OmniAuth</span><span style="color:#f92672">.</span>config<span style="color:#f92672">.</span>full_host
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">when</span> <span style="color:#66d9ef">Proc</span>
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">OmniAuth</span><span style="color:#f92672">.</span>config<span style="color:#f92672">.</span>full_host<span style="color:#f92672">.</span>call(env)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">else</span>
</span></span><span style="display:flex;"><span>      uri <span style="color:#f92672">=</span> <span style="color:#66d9ef">URI</span><span style="color:#f92672">.</span>parse(request<span style="color:#f92672">.</span>url<span style="color:#f92672">.</span>gsub(<span style="color:#e6db74">/\?.*$/</span>,<span style="color:#e6db74">&#39;&#39;</span>))
</span></span><span style="display:flex;"><span>      uri<span style="color:#f92672">.</span>path <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>      uri<span style="color:#f92672">.</span>query <span style="color:#f92672">=</span> <span style="color:#66d9ef">nil</span>
</span></span><span style="display:flex;"><span>      <span style="color:#75715e">#sometimes the url is actually showing http inside rails because the other layers (like nginx) have handled the ssl termination.</span>
</span></span><span style="display:flex;"><span>      uri<span style="color:#f92672">.</span>scheme <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;https&#39;</span> <span style="color:#66d9ef">if</span> request<span style="color:#f92672">.</span>ssl?
</span></span><span style="display:flex;"><span>      uri<span style="color:#f92672">.</span>to_s
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">end</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span>
</span></span></code></pre></div><p>So to fix it you can add to your production environment something like this:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ruby" data-lang="ruby"><span style="display:flex;"><span><span style="color:#75715e"># config/environments/production.rb</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">OmniAuth</span><span style="color:#f92672">.</span>config<span style="color:#f92672">.</span>full_host <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;http://example.com&#34;</span>
</span></span></code></pre></div><p>Yep - that&rsquo;s all :).</p>
]]></description><content:encoded><![CDATA[<p>Lately I had some problems with invalid callback url I was getting on my production server (shared host). Omniauth in response included port used internally by nginx (eg. this could be the case eg. when you have varnish in front of you web server) - after browsing the source code of omniauth gem I have found out that you can easily fix if without even touching webserver configuration (and I didn&rsquo;t had access to it anyway :P).</p>
<p>So take a look at <code>strategy.rb</code>, you have there method <code>full_host</code> and as you see below in the first place it tries to fetch it&rsquo;s value from user&rsquo;s configuration.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ruby" data-lang="ruby"><span style="display:flex;"><span><span style="color:#75715e"># omniauth/lib/omniauth/strategy.rb</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">full_host</span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">case</span> <span style="color:#66d9ef">OmniAuth</span><span style="color:#f92672">.</span>config<span style="color:#f92672">.</span>full_host
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">when</span> String
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">OmniAuth</span><span style="color:#f92672">.</span>config<span style="color:#f92672">.</span>full_host
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">when</span> <span style="color:#66d9ef">Proc</span>
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">OmniAuth</span><span style="color:#f92672">.</span>config<span style="color:#f92672">.</span>full_host<span style="color:#f92672">.</span>call(env)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">else</span>
</span></span><span style="display:flex;"><span>      uri <span style="color:#f92672">=</span> <span style="color:#66d9ef">URI</span><span style="color:#f92672">.</span>parse(request<span style="color:#f92672">.</span>url<span style="color:#f92672">.</span>gsub(<span style="color:#e6db74">/\?.*$/</span>,<span style="color:#e6db74">&#39;&#39;</span>))
</span></span><span style="display:flex;"><span>      uri<span style="color:#f92672">.</span>path <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span>
</span></span><span style="display:flex;"><span>      uri<span style="color:#f92672">.</span>query <span style="color:#f92672">=</span> <span style="color:#66d9ef">nil</span>
</span></span><span style="display:flex;"><span>      <span style="color:#75715e">#sometimes the url is actually showing http inside rails because the other layers (like nginx) have handled the ssl termination.</span>
</span></span><span style="display:flex;"><span>      uri<span style="color:#f92672">.</span>scheme <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;https&#39;</span> <span style="color:#66d9ef">if</span> request<span style="color:#f92672">.</span>ssl?
</span></span><span style="display:flex;"><span>      uri<span style="color:#f92672">.</span>to_s
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">end</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span>
</span></span></code></pre></div><p>So to fix it you can add to your production environment something like this:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ruby" data-lang="ruby"><span style="display:flex;"><span><span style="color:#75715e"># config/environments/production.rb</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">OmniAuth</span><span style="color:#f92672">.</span>config<span style="color:#f92672">.</span>full_host <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;http://example.com&#34;</span>
</span></span></code></pre></div><p>Yep - that&rsquo;s all :).</p>
]]></content:encoded></item></channel></rss>