Tag: api

使用Android API为Android App创建Web前端。

提前谢谢你回答这个问题。 这是一个场景,我想要一些指导方针的建议。 我有一个Android应用程序的音乐流媒体与以下function 音乐流媒体 创建播放列表 用户登录/注销 按类别搜索专辑或艺术家或流派FM Radio Streaming 推送通知 均衡器等。 我还有一个在Ruby on Rail(Mysql数据库)中创建的后端,用于音乐管理,如添加歌曲,流派,专辑和艺术家。 它还处理发送推送通知和所有。 现在我想为用户创建一个网络前端,通过他们的笔记本电脑或桌面欣赏歌曲,这样我就可以让我的用户灵活地播放歌曲,查看他们在Android设备中创建的播放列表。 这是主要问题: 如何创建前端以使用我的Android应用程序正在使用的json api,以便我不必为该网站创建另一个后端。 如果有可能,请告诉我。 如果不能使用json api那么我该怎么办才能避免另一个后端工作?

授予Rails应用程序API访问权限的最佳身份validation方法

我想为我的网络应用提供经过身份validation的API访问。 这种服务的消费者通常是其他网站/服务。 validation这些用户的最佳方法是什么? OAuth,openID,http身份validation?

使用设计API进行自定义身份validation

所以我在这里有一个小巧的组合 Company has many Users User belongs to Company 用户通过设计进行身份validation管理 class User < ActiveRecord::Base belongs_to :company devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 您可以以用户身份登录并创建所有属于公司的对象,而不是用户,例如: Text 。 ( company.texts ) 现在我使用acts_as_api gem创建了一个简单的API。 对于这个我只需要修改我的文本控制器,fe show动作。 class TextsController @text } end 这在网站上运行得很好。 问题是API。 我不想通过用户模型访问api时进行身份validation。 该公司确实有一个名为:hash的属性,我希望在API中使用Auth。 我不知道如何使用设计(或任何其他方法)来实现这一点。 所以默认情况下,设计希望用户登录,因为我的控制器中有load_and_authorize_resource ,这对于html响应是好的,但对于json响应则没有。 有任何想法吗? 谢谢你读这个。 如果不清楚,请发表评论!

从youtube登录OAuth保存用户的性别和位置

我有使用OAuth2的youtube登录设置,并且在用户注册成功后,我想将用户性别和位置保存在数据库中。 检查OAuth文档https://developers.google.com/accounts/docs/OAuth2Login#userinfocall,您可以看到您可以访问用户的性别和位置以及姓名,电子邮件和个人资料图片等内容。 下面是我将用户信息保存到数据库的代码 user.rb def self.from_omniauth(auth) where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user| user.provider = auth.provider user.uid = auth.uid user.name = auth.info.name user.email = auth.info.email user.picture = auth.info.image user.gender = auth.info.gender user.country = auth.info.locale user.oauth_token = auth.credentials.token user.oauth_expires_at = Time.at(auth.credentials.expires_at) user.save! end end 但是使用auth.info.USER_INFO配置似乎不会将这些值保存到数据库中。 我错过了什么吗? 以下是我的应用程序要求的参数,没有任何范围。 UPDATE 我通过传入userinfo.profile参数的额外范围来实现此目的。 请记住包含没有逗号分隔的完整url。 Rails.application.config.middleware.use OmniAuth::Builder do provider :youtube, YOUTUBE_KEY, YOUTUBE_SECRET, { :scope […]

控制器中的索引方法不适用于活动模型序列化程序

我想发送一个包含我的bookmarks资源集合的json响应。 出于某种原因,主动模型序列化器不会按预期操纵我的json。 它只呈现默认响应。 这是app/serializers/bookmarks_serializer.rb BookmarksSerializer序列化app/serializers/bookmarks_serializer.rb class BookmarksSerializer < ActiveModel::Serializer attributes :id, :url, :title end 和我的Api::UsersController控制器方法,它在顶部有一个respond_to :jsonfilter def index user = User.find_by(username: params[:username]) @bookmarks = user.bookmarks render json: @bookmarks.to_json end 而不是只获取:id,:title和:url,我得到完整的默认哈希 我究竟做错了什么? 我使用rails 4.1.5和active_model_serializers gem的github版本。 gem ‘active_model_serializers’, github: ‘rails-api/active_model_serializers’ 仅供参考:我在同一个控制器中有一个show方法,它的序列化器可以很好地获取单个资源。 它只是索引方法中不呈现的集合。 请帮忙

Rails ActiveModelSerializer将两个相同类型模型的列表组合成一个序列化响应,具有不同的名称

我有一个rails api,其中我使用Active Model Serializers(版本0.10.6)来序列化json响应。 我有两个数组,在端点中都是“FeatureRequest”类型,返回用户发出的请求列表,以及第二个用户被标记的请求列表。理想情况下,我想将响应序列化为看起来像这样: { “my_requests” : { …each serialized request… }, “tagged_requests” : { …each serialized request, using the same serializer” } } 有办法做到这一点吗? 这是我的相关控制器方法: def index_for_user user = User.includes(leagues: :feature_requests).find(params[:user_id]) # Find all requests that this user created @users_created_feature_requests = FeatureRequest.requests_for_user(user.id) @feature_requests_in_tagged_leagues = [] user.leagues.each do |league| @feature_requests_in_tagged_leagues << league.feature_requests end …some […]

用于Rails的Mailchimp API – list.subscribe(:double_optin => false)无法正常工作

我正在使用mailchimp-api gem并且可以通过提交电子邮件并将确认电子邮件发送到已注册的电子邮件来获取提交的电子邮件,但我想禁用double_optin标志。 我试图这样做: @mc = Mailchimp::API.new(‘my api key here’) @mc.list.subscribe(‘list_id’, {’email’ => params[:email]}, :double_optin => false) 这仍然是向该电子邮件地址发送确认电子邮件。 我真的不喜欢它如何重定向到mailchimp页面以确认您的订阅,并且必须单击另一个按钮才能重定向到该站点。 如果您可以自定义确认电子邮件,但这个通用确认页面很糟糕。 我想知道你是否必须有一个付费帐户才能切换:double_optin标志?

Swift TRON内容类型HeaderBuilder语法

我正在使用TRON来访问基于ruby on rails的api,我觉得我的问题是因为标题没有正确的信息。 我一直在使用TRON的HeaderBuilder语法,但却无法真正看到语法需要的内容。 我的rails错误是在尝试从特定控制器操作获取数据时 [active_model_serializers] Rendered ActiveModel::Serializer::Null with Hash (0.25ms) Filter chain halted as :ensure_valid_accept_media_type rendered or redirected Completed 406 Not Acceptable in 61ms (Views: 30.0ms | ActiveRecord: 2.7ms | Solr: 0.0ms) 在xcode中,我使用rest类型控制器来获取json public class DataController { static let tron = TRON(baseURL: GlobalVariables().baseURL) class Fetched: JSONDecodable { let response: JSON required init(json: JSON) throws […]

如何在Rails中使用API​​返回嵌套注释

has_many :comments都有has_many :comments关联 我有以下方法来归还我的车: class Api::V1::CarsController recent) end end 我最近获得了以下汽车: curl -X GET http://cars.dev/api/v1/cars/recent -d “token=zzxWkB3SzDP3U1wDsJbY” -d “how_recent=20” 我希望得到这样的回应: “recent_with_comments”:{“recent”:[{“type”:”ferrari”,”price”:null,”user_id”:78,”username”:null,”comments”:[{“id”:1, “comment”: “some text”},{“id”:2, “comment”: “some text 2”}]}]

在Rails Devise app中Find_for_database_authentication vs Find_by?

所以,我正在尝试使用设计建立一个React前端和Rails后端,而Rails端应该是一个内部API。 这是我第一次这样做,所以我正在努力进行身份validation。 具体来说,在我的SessionsController中,我有这样的代码: def create resource = User.find_for_database_authentication(email: params[:email]) return invalid_login_attempt unless resource if resource.valid_password?(params[:password]) sign_in :user, resource return render nothing: true end invalid_login_attempt end 这总是返回401 Unauthorized。 我检查调用valid_password的结果? 它总是假的。 但是,如果我用find_for_database_authentication替换find_by ,那么valid_password? 工作没有问题。 为什么是这样? 如果现在用户只能输入他的电子邮件而不是他的密码,这没关系,但这确实让我很困惑。 它也让我觉得这不会使用任何令牌检查(不同的问题)。 另一方面,我也想知道CSRF令牌是否适用于内部API(我应该使用不同的令牌身份validation吗?),以及如果用户使用登录表单我应该如何包含CSRF令牌尚未登录,但我猜这些是另一篇文章的问题。 谢谢你的帮助。