2016-03-23 20 views
8

Tôi muốn xây dựng một api đường ray cho đăng nhập fb bằng cách sử dụng, khung ionic. Cho đến bây giờ tôi đã tạo thành công một ứng dụng nền tảng web và nó đã xác thực thành công với Facebook.Rails API cho đăng nhập fb với Ionic

Bây giờ tôi muốn làm tương tự nhưng với ứng dụng dựa trên ion.

Câu hỏi?

  1. Có thể viết api đường ray bằng cách sử dụng omniauth và sử dụng api xác thực fb với ion không.
  2. Nếu có thể (1) loại yêu cầu json nào được thực hiện hoặc trả lại.

Không thể tìm thấy bất kỳ thứ gì trên web về nó, cũng như bất kỳ dự án github nào của đường ray với ionic (đăng nhập fb).

mã hiện tại của tôi:

Bộ điều khiển:

class SessionsController < ApplicationController 
    def create 
    user = User.from_omniauth(env["omniauth.auth"]) 
    session[:user_id] = user.id 
    redirect_to root_url 


    end 

    def destroy 
    session[:user_id] = nil 
    redirect_to root_url 
    end 
end 

mẫu:

class User < ActiveRecord::Base 
    def self.from_omniauth(auth) 
    where(provider: auth.provider, uid: auth.uid).first_or_initialize do |user| 
     user.provider = auth.provider 
     user.uid = auth.uid 
     user.name = auth.info.name 
     user.oauth_token = auth.credentials.token 
     user.oauth_expires_at = Time.at(auth.credentials.expires_at) 
     user.save! 
    end 
    end 
end 

Initializers:

OmniAuth.config.logger = Rails.logger 
Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, "123", "abc" 
end 
+1

Tôi nghĩ bạn đang tìm kiếm xác thực phía máy khách oauth2 (không bao giờ bỏ qua omniauth và giả sử rằng phụ trợ đường ray không tồn tại). http://blog.ionic.io/oauth-ionic-ngcordova/ –

Trả lời

0

Tôi không chắc chắn nếu nó có thể ... nhưng tôi nghĩ bạn không nên sử dụng cùng một logic.

Rails facebook omniauth flow là phiên dựa trên trong khi ứng dụng Ionic chủ yếu là "access token", nghĩa là bạn trưng ra API Rails với xác thực.

Ngoài ra, trong Ionic bạn có một số ưu điểm: bạn có thể truy cập vào Đăng nhập Facebook gốc bằng cách sử dụng Ionic Native Facebook Connect Plugin, cung cấp trải nghiệm người dùng tốt hơn cho người dùng đã cài đặt Facebook.

Tôi đã gặp vấn đề tương tự và những gì tôi hoàn thành trước tiên là hiểu cách xác thực hoạt động cho các ứng dụng một trang. Đối với điều này, tôi khuyên bạn nên đọc "Authentication for single single page apps".

giải pháp cuối cùng của tôi trông như thế này:

enter image description here

Các công cụ tôi sử dụng:

Bạn có thể thấy một ví dụ đường ray ứng dụng để lấy một mã thông báo JWT hợp lệ cho một facebook auth thẻ có giá trị tại https://github.com/muZk/rails5-api-jwt-facebook-auth

Sau khi tạo backend, phần Ionic nên một cái gì đó như thế này:

this.fb.login(['public_profile', 'user_friends', 'email']) 
    .then((res: FacebookLoginResponse) => post('your-rails-backend.com/api/auth/facebook', { access_token: FacebookLoginResponse.accessToken })) 
    .then(res => console.log('This is your JWT for your rails API:', res.accessToken)) 

Tôi biết đây không phải là giải pháp sao chép-dán nhưng tôi hy vọng tôi đã giúp bạn một chút với vấn đề của bạn.

Các vấn đề liên quan