這是返回的對象。我最終需要得到兩件事:@token
和@expires_at
。我將如何從他們得到他們?如何從此對象獲取數據?
@my_object = access_token(params[:provider])
然後輸出:
#<OAuth2::AccessToken:0x007fd03df75db8
@client=#<OAuth2::Client:0x007fd035040ad0
@id="123xyz",
@secret="xyz123",
@site="https://graph.facebook.com",
@options={
:authorize_url=>"/oauth/authorize",
:token_url=>"oauth/access_token",
:token_method=>:post,
:connection_opts=>{
:ssl=>{
:ca_file=>"ca-bundle.crt"
}
},
:connection_build=>nil,
:max_redirects=>5,
:raise_errors=>true,
:mode=>:query,
:param_name=>"access_token",
:parse=>:query
},
@auth_code=#<OAuth2::Strategy::AuthCode:0x007fd035040c88
@client=#<OAuth2::Client:0x007fd035040ad0 ...>>,
@connection=#<Faraday::Connection:0x007fd037aec978
@headers={"User-Agent"=>"Faraday v0.8.7"},
@params={},
@options={},
@ssl={:ca_file=>"ca-bundle.crt"},
@parallel_manager=nil,
@default_parallel_manager=nil,
@builder=#<Faraday::Builder:0x007fd037aeca68
@handlers=[Faraday::Request::UrlEncoded, Faraday::Adapter::NetHttp]>,
@url_prefix=#<URI::HTTPS:0x007fd037aecf90 URL:https://graph.facebook.com/>,
@proxy=nil,
@app=#<Faraday::Request::UrlEncoded:0x007fd037aeb3c0
@app=#<Faraday::Adapter::NetHttp:0x007fd037aeb370
@app=#<Proc:[email protected]/gems/faraday-0.8.7/lib/faraday/connection.rb:87 (lambda)>>>>>,
@token="token_123",
@refresh_token=nil,
@expires_in=5149095,
@expires_at=1373851292,
@options={
:mode=>:query,
:header_format=>"Bearer %s",
:param_name=>"access_token"
},
@params={:token_url=>"oauth/access_token"}>
由於對象具有屬性不具有存取暗示。你的問題以錯誤的方式走到了最後。 – fotanus
你說得對,但爲什麼SomeObject.to_s包含不可訪問的實例變量? –
我不知道,我不習慣在我的對象中聲明'to_s',並且由於這是默認行爲,所以它不可靠。但是可以避免通過猜測它是可讀的來查看文檔,我也這樣做。然而,當你對OP有懷疑時,這不是一種安全的方式。 – fotanus