所以我实现了谷歌加登录到我的应用程序......我的实现非常接近这里给出的例子.我和他之间的最大区别是我有更多的范围,我需要.在构建我的plusclient时,我指定以下范围:
"https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email"
Run Code Online (Sandbox Code Playgroud)
在我的onConnected方法的后面,我尝试从我的会话中获取一个accessstoken,以便传递到我们的服务器,在那里我们做真正的肉类和土豆工作.
GoogleAuthUtil.getToken(SplashActivity.this, mPlusClient.getAccountName(), "oauth2: https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email")
Run Code Online (Sandbox Code Playgroud)
这确实产生了一个accessentoken.YIPPEE!对?不.当我们尝试使用此令牌时,它似乎与我们的应用程序无关.当通过googles tokeninfo端点运行令牌时,我们得到了一些东西
{
"issued_to": "608941808256-43vtfndets79kf5hac8ieujto8837660.apps.googleusercontent.com",
"audience": "608941808256-43vtfndets79kf5hac8ieujto8837660.apps.googleusercontent.com",
"user_id": "107245641469745809180",
"scope": "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email",
"expires_in": 3577,
"email": "redacted@email.com",
"verified_email": true,
"access_type": "online"
}
Run Code Online (Sandbox Code Playgroud)
issued_to值与我们的任何客户端ID都不匹配.根据此博客文章的最后一部分,谷歌无法将此令牌请求与我们的项目相匹配.但是,在我们的API控制台中,我确实在那里有用于android的SHA指纹,它确实用分号用分号分隔.没有拼写错误.我等了好几个小时才看出它是否是传播问题.我还添加了SHA指纹以及为我们的调试密钥库创建clientid的东西.我们是否有同样的问题,我们是否从eclipse中导出签名的apk,或者我们是否直接运行它.
这让我疯了.我不知道在哪里转过来.
例如,在打电话时
googleapis.com/plus/v1/people/me/people/visible?access_token=TOKEN_HERE&maxResults=100&pageToken=&alt=json&orderBy=best
我明白了
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured"
}
],
"code": 403,
"message": "Access Not Configured"
}
}
Run Code Online (Sandbox Code Playgroud)
因为谷歌无论出于何种原因都没有将该令牌与我的项目相关联.
我有一个美丽而方便的帮助内联函数,我在一个项目中(原来它的根源在这里和这里):
static inline BOOL isEmpty(id thing) {
return !thing
|| [thing isKindOfClass:[NSNull class]]
|| ([thing respondsToSelector:@selector(length)] && [((id)thing) length] == 0)
|| ([thing respondsToSelector:@selector(count)] && [((id)thing) count] == 0);
}
static inline BOOL isNotEmpty(id thing) {
return !isEmpty(thing);
}
Run Code Online (Sandbox Code Playgroud)
一切顺利.
它对于检查NSString,NSData,NSArray,NSDictionary,NSSet和其他有用...我现在的问题是我把它带到另一个项目(我将使用的静态框架/库)并且有以下问题:阻止我的项目建设:

我正在使用相同(最新)版本的xCode,因此不确定可能会阻止这一方面而不是另一方面的差异......项目设置在两个项目中明显不同(如上所述,是一个框架,一个是常规项目)但是会这样做吗?
提前致谢!
按住命令并单击方法或属性以获取编译器正在看到的所有实例的下拉...您可能具有冲突的返回类型.
因此,在完成一些正常工作的正常过程中,我遇到了一个通用类System.NullReferenceException: 'Object reference not set to an instance of an object.'。
因此,当我开始寻找罪魁祸首时,我在想什么都没问题。经过大量的调试后,我举起手来想暂时放弃...我绕过此方法的策略是仅实例化一个数组,而不是为数据调用某些服务。
所以我改变了:
var data = service.GetData(someId);
Run Code Online (Sandbox Code Playgroud)
至
var data = new DataType[]{};
Run Code Online (Sandbox Code Playgroud)
使我的代码可编译和可调试,以便我可以回到这一点。
更重要的是:这样做之后,我仍然在那条线上遇到了例外。因此,仅数组实例化就会产生此异常。异常的数据为零。除了指向该行外,没有内部异常或堆栈跟踪。类本身只是一个没有方法(也没有构造函数)的poco,因此内部什么也没有发生。(有关课程,请参见下文)
我的下一个想法是,很明显,我看到的代码不是我的调试会话正在使用的代码。
为了测试这个想法,我已经
我仍然面对这个。
任何人都在思考如何获得更多有关为什么发生这种情况的详细信息,或者还有其他我应该清洁的东西?
我还查看了的输出,git clean -xdn以查看周围有什么样的临时性东西可以删除,并且那里没有任何有趣的东西...
不管实际使用的是什么代码,如果我完全注释掉了这一行并在其中放置了完全不同的代码(如最初所述),则该代码将引发异常。我只是让我的一位同事抓住这个分支并运行它,对他们来说很好
到目前为止,深达3个小时...不好玩
编辑:
根据要求,这是一个定义:
using System;
using Dapper.Contrib.Extensions;
namespace some_namespace
{
#pragma warning disable 1591
[Table ("CompanyOptions")]
public class CompanyOption
{
[ExplicitKey]
public Guid PKID { get; …Run Code Online (Sandbox Code Playgroud)