2011-10-25 15 views
0

私はFacebookのIframeアプリケーションを構築するためにRoR 3.1とKoalaを使用しています。新しいユーザーが自分のアプリにアクセスすると、Facebookのロゴと「Facebookに行く」というリンクがiframeに表示されます。ロゴをクリックすると、権限のポップアップが表示されます。許可の作品をクリックする - 私のアプリの機能はそれ以降はうまく機能します。私はこのトピックに関する他の記事を見ましたが、私には解決策がありませんでした。iframeアプリケーションの最初の認証時に、認証用ポップアップではなくFacebookロゴを取得しています

これは、この質問に文書と同じ問題であるように見えますが、答えは私のために動作しませんでした:Facebook OAuth login for iframe canvas apps displays a logo image and a Go to Facebook.com caption instead of logging in

私は私のindex.html.erbファイルの先頭にtop.location.hrefを含めてみましたハードコードされたURL:top.location.href = "https://www.facebook.com/dialog/permissions.request?appid=xxx、no nouck。

私はFacebookのロゴのリンクをつかんで試しました参考までに、リンクは次のようになります:https://www.facebook.com/dialog/permissions.request?app_id=XXX&display=page&next=http%3A%2F%2Feowyn.simularity.com%3A3000%2Fgifty%2Fcallback&response_type=code&fbconnect=1&perms=user_likes%2Cuser_groups%2Cfriends_likes#

私はFaに掲載されたバグを読んでいますそれについてのcebook、それは "設計通りに"閉じられた。 http://bugs.developers.facebook.net/show_bug.cgi?id=11326

これはひどいユーザーエクスペリエンスであり、これが意図されたものだとは想像できません。私が使っている他のアプリのどれもこの問題を抱えていません。あなたは、アプリケーションに行くためのリンクをクリックすると、アクセス許可のダイアログボックスが表示されます。

ことができます場合には、私のコントローラのコードを追加:任意の助け

SITE_URL="http://mysubdomain.example.com:3000/" 

    def index 
      @oauth = Koala::Facebook::OAuth.new(APP_ID, APP_SECRET, SITE_URL + 'myapp/callback') 
      session[:oauth] = @oauth 
      redirect_to @oauth.url_for_oauth_code(:permissions => "user_likes,user_groups,friends_likes") 
     end 


     #method to handle the redirect from facebook back to you 
     def callback 
     #get the access token from facebook with your code 
     session[:access_token] = session[:oauth].get_access_token(params[:code]) 
     redirect_to '/myapp/menu' 
     end 

     def menu 

      @api = Koala::Facebook::API.new(session[:access_token]) 
      < app code here > 

感謝を! Liz

+0

あなたのリンクに 'target =" _ top "'を追加しようとしましたか?これは、トップ文書のリンクを開きます。しかし、再度リダイレクトuri(次)はあなたのキャンバスURLでなければなりません: 'https:// apps.facebook.com/appnamespace' – ifaour

+0

@ifaour - どのリンクがtarget =" _ top " apps.facebook.com/appnamespaceに?上記のコードを追加して、自分が何をしているかを見ることができます。ご協力いただきありがとうございます! –

答えて

0

私はこれを今解決したと思います。私はSandbox Modeで自分のアプリを開発していました。 Settings _> Advancedで自分のアプリを設定してFacebookのサンドボックスモードから取り出したところ、それが動作し始めました。私はまた、 "Enahnced Auth Dialog"を有効にして、厄介なFacebookロゴの代わりに新しい友好的なAuth Dialogが表示されます。

これは、この問題を抱えている可能性のある他の人々に役立つことを願っています。 FWIW、私はtop.location.hrefまたはjavascriptを使ってこれを動作させる必要はありませんでした。

+0

おめでとうございます!あなたができるときは、他の人があなたの成功から学ぶかもしれないようにあなたの答えを「受け入れられた」とマークしてください。乾杯〜 –

関連する問題