26

DeviseとOmniauthを使用してRailsアプリのユーザー認証を設定しました。今、私が作成したいAndroidアプリとiPhoneアプリに同じ認証をどこから使い始めるべきか疑問に思っています。

/ auth / facebookのモバイルバージョンを使用する必要がありますか、それともアプリから直接リクエストを送信する必要がありますか?

これは非常に一般的な質問ですが、どこにも見ることができません。

編集:RESTfulAPIで使用するトークン認証をアプリに追加しました。Omniauth/Facebookトークンの部分がありません。

4

1 に答える 1

38

さて、私は自分の質問に答えています。

Facebook SDKを使用すると、SSO はデバイス上で非常にうまく機能しますが、受け取るトークンは、Rails アプリで受け取るものと同じではありません。どうやら Facebook は、サポートに応じて異なるトークンを作成します。

Android デバイスでトークンを受け取ったら、次の URL を介して Rails アプリに送信します。

http://myapp/check_mobile_login?token=FB_MOBILE_TOKEN

これは、fb_graph gem でトークンを使用してユーザー データを取得するアプリケーション コントローラーによってキャッチされます。トークンが有効であれば、いくつかの情報を受け取ります。次に、データベースを確認し、同じ UID が見つかった場合、ユーザーは認証され、Devise から Authentificable_token を送り返します。

そしてドラフトコード:

    def check_mobile_login
        token = params[:token]

        user = FbGraph::User.me(token)
        user = user.fetch

        logged = User.find_by_uid(user.identifier)

        respond_to do |format|
            format.html # index.html.erb
            format.json { render :json => logged.authentication_token }
        end
    end

誰かがより良い解決策を持っているなら、私はそれを聞いてうれしいです:)

于 2011-02-01T14:05:27.710 に答える