Tag: 谷歌API

如何注销我使用OAuth2使用Googlelogin的应用程序?

在我的应用程序中,我使用jsapi实现了Google注销。 我使用https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=xxxxxxurl连接到Google,然后使用https://www.googleapis.com/plus/v1/people/xxxxxx获取用户数据从谷歌个人资料。 现在我需要从Google注销用户,同时点击我的应用程序中的button。 我怎样才能在JavaScript中实现这一点,或者至less每次用户login时都必须询问Google的login页面。 我已经尝试了approval_prompt = force,但似乎没有工作。

如何使用inheritancebuild模RESTful API?

我有一个对象层次结构,我需要通过一个RESTful API公开,我不知道我的URL应该如何结构和他们应该返回。 我找不到任何最佳做法。 假设我有从动物inheritance的狗和猫。 我需要对狗和猫进行CRUD操作; 我也希望能够对动物做一般的操作。 我的第一个想法是做这样的事情: GET /animals # get all animals POST /animals # create a dog or cat GET /animals/123 # get animal 123 事情是/动物集合现在是“不一致的”,因为它可以返回并采取不完全相同的结构(狗和猫)的对象。 有一个集合返回具有不同属性的对象是否被认为是“RESTful”? 另一个解决scheme是为每个具体types创build一个URL,如下所示: GET /dogs # get all dogs POST /dogs # create a dog GET /dogs/123 # get dog 123 GET /cats # get all cats POST […]

你如何定义好的或坏的API?

背景: 我正在我的大学上课,名为“软件约束”。 在第一次讲座中,我们正在学习如何build立良好的API。 一个很好的例子,我们得到了一个非常糟糕的API函数是public static void Select(IList checkRead, IList checkWrite, IList checkError, int microseconds); 在C#中。 该函数接收3个套接字列表,并销毁它们,使得用户在将它们送入Select()之前必须克隆所有套接字。 它也有一个超时(微秒),它是一个int,它设置服务器可以等待套接字的最长时间。 这个限制是+/- 35分钟(因为它是一个整数)。 问题: 你如何定义一个API为“坏”? 你如何定义一个API为“好”? 要考虑的要点: function名称很难记住。 function参数很难理解。 糟糕的文档。 一切都是如此相互联系,如果你需要改变1行代码,你实际上需要改变其他地方的数百行。 破坏他们论点的function。 由于“隐藏”的复杂性,可扩展性差。 用户/ dev需要在API上构build包装器,以便可以使用它。

保护API:SSL和HTTP基本身份validation与签名

在为我们的Web应用程序devise一个API时,我们将使用他们的子域作为“用户名”并生成一个API密钥/共享密钥。 首先,可以使用子域名作为用户名吗? 我看不到产生另一个密钥的好处。 不同的API似乎做了以下两件事之一: 使用SSL进行HTTP基本authentication 在每个请求中,用户名被设置为子密码和API密码的密码。 由于我们使用SSL,所以这应该是安全的欺骗。 值得注意的API: Google Checkout , Freshbooks , GitHub , Zendesk 使用共享密钥创build请求的签名 通常通过对密钥/值对进行sorting并使用HMAC-SHA1和共享密钥来生成签名。 签名随后与请求一起发送,并在另一端进行validation。 值得注意的API: Google Checkout , Amazon AWS PS:这是没有错,Google Checkout支持 编辑:只要阅读,OAuth 2正在放弃签名,赞成通过SSL发送用户名/密码。 任何人的意见,select什么:SSL与签名?

我应该如何处理RESTful API中的对象层次结构?

我目前正在为现有的PHP应用程序deviseAPI,并为此调查REST作为一种明智的架构方法。 我相信我对关键概念有合理的把握,但是我正在努力find解决了对象层次结构和REST的人。 这是问题… 在[应用程序]业务对象层次结构中,我们有: Users L which have one-to-many Channel objects L which have one-to-many Member objects 在应用程序本身中,我们使用延迟加载方法根据需要使用这些对象的数组填充User对象。 我相信OO术语这是对象聚合,但我已经看到了各种命名不一致,不关心开始一场关于精确的命名约定的战争。 现在,考虑我有一些松散耦合的对象,根据应用程序的需要我可能/不可以填充。 从REST的angular度来看,我试图确定这个方法应该是什么。 这是我目前的想法(暂时只考虑GET): 选项1 – 完全填充对象: GET api.example.com/user/{user_id} 读取用户对象(资源)并返回用户对象,其中包含预先加载和编码的所有可能的通道和成员对象(JSON或XML)。 优点:减less对象数量,不需要遍历对象层次结构 缺点:对象必须完全填充(昂贵) 选项2 – 填充主要对象并包含指向其他对象资源的链接: GET api.example.com/user/{user_id} 阅读用户对象(资源)并返回填充的用户对象用户数据和两个列表。 每个列表引用适当的(子)资源,即 api.example.com/channel/{channel_id} api.example.com/member/{member_id} 我认为这与超媒体的影响(或确切地说)很接近 – 客户可以根据需要获得其他资源(只要我明智地标记)。 PROS:客户端可以select加载下属或者更好地分离对象作为REST资源 缺点:需要进一步旅行获得次要资源 选项3 – 启用recursion检索 GET api.example.com/user/{user_id} 阅读用户对象,并包含指向子对象列表的链接 api.example.com/user/{user_id}/channels api.example.com/user/{user_id}/members /通道调用将返回表单中的通道资源列表(如上所示): api.example.com/channel/{channel_id} PROS:主要的资源暴露了从哪里去获取子元素,而不是它们是什么(更RESTful?),没有要求获得下属,下级列表生成器(/通道和/成员)提供接口(方法)响应更多的服务。 […]

System.Net.Http:缺less命名空间? (使用.net 4.5)

TL; DR:我是这个语言的新手,不知道自己在做什么 这是我的课到目前为止: using System; using System.Collections.Generic; using System.Net.Http; using System.Web; using System.Net; using System.IO; public class MyClass { private const string URL = "https://sub.domain.com/objects.json?api_key=123"; private const string data = @"{""object"":{""name"":""Title""}}"; public static void CreateObject() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = data.Length; StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII); […]

iTunes Connect API

iTunes Connect是否具有API? 一些应用程序如何将财务和销售报告下载到计算机? 是否有一些C / Objective-C API包装? 提前致谢。

Java相当于.NET System.InvalidOperationException

我不太熟悉Java的exception包和.NET的exception包。 我在这种情况下,如果在C#编程,我会抛出一个System.InvalidOperationException 。 在创build我自己的java.lang.RuntimeException子类之前,我需要知道是否有类似的exceptiontypes,我应该抛出Java。 确切的情况是: 我的类是一个值对象,它提供了一个int intValue()方法,返回一个int。 但是,在某些情况下,当前值不能作为int提供,所以这个类还提供了一个boolean isInteger()来允许API用户知道intValue()何时可以被安全地调用。 如果调用者在isInteger()为false时调用intValue() ,则应抛出exception。 问题是:什么types的exception? 我知道这个问题可能没有一个正确的答案,但考虑到我没有很多deviseJava API的经验,我想从其他Java开发人员那里知道他们会在这种情况下抛出什么。 谢谢

特定页面上的访问者数量

我希望看到特定页面上的访问者数量(为此我有URL)。 我在Google Analytics(分析)中找不到在哪里inputurl,以查找此特定网页的统计信息。

这个Rails JSON身份validationAPI(使用Devise)是否安全?

我的Rails应用程序使用Devise进行身份validation。 它有一个姊妹iOS应用程序,用户可以使用它们用于Web应用程序的相同凭据login到iOS应用程序。 所以我需要一些API来进行身份validation。 这里有很多类似的问题指向本教程 ,但似乎已经过时了,因为token_authenticatable模块已经从Devise中移除,并且一些行会抛出错误。 (我正在使用Devise 3.2.2)。我试图根据那个教程(和这个教程)推出自己的教程,但是我不是100%自信的 – 我觉得我可能会有一些东西误解或错过。 首先,遵循这个要点的build议,我添加了一个authentication_token文本属性到我的users表中,以及以下到user.rb : before_save :ensure_authentication_token def ensure_authentication_token if authentication_token.blank? self.authentication_token = generate_authentication_token end end private def generate_authentication_token loop do token = Devise.friendly_token break token unless User.find_by(authentication_token: token) end end 然后我有以下控制器: api_controller.rb class ApiController < ApplicationController respond_to :json skip_before_filter :authenticate_user! protected def user_params params[:user].permit(:email, :password, :password_confirmation) end end […]