0

我有 2 个使用 Google+ 登录按钮的 web 应用程序,其中一个工作正常,另一个似乎正在登录,但返回的 authenticationResult(在我的回调方法中)为 0。我说它似乎让我登录了我收到一个弹出窗口,上面写着“欢迎回来,你已经通过 Google+ 以 sean christe 的身份登录连接了这个应用程序。”

在我一切正常的应用程序中,我在 signinCallback 中的 authenticationResult 是一个完整的 javascript 对象 - 在不工作的那个对象中,它只是一个 0。

让我担心的一件事是,两个应用程序之间的 clientIds 存在很大差异。在应用程序中一切正常,我的 clientId 只有 12 个数字 - 在我的登录返回 0 的应用程序中,我的 ClientId 是最初的 12 个数字加上一个“-”,后跟一个 32 个字符的字母数字字符串。看起来所有示例都只有 12 个数字 - 而且,我的不工作应用程序的 ClientID 有 3 个 javascript 来源 - 我工作的只有 1 个。这个 ClientID 正常吗?- 我在查找相关文档时遇到问题。

我在这两个应用程序中都使用了 Google Endpoints - 一个正在运行 gapi 对象的应用程序填充了我的所有端点 - 在一个不工作的应用程序中,我的 gapi 对象似乎没有被填充。


编辑:对于下面的评论 - 我的确切代码实际上发布在这里:http ://exposure101-development.blogspot.com/2013/07/initializing-angularjs-app-with-oauth2.html和我一直在使用的指令就在这里https://github.com/sirkitree/angular-directive.g-signin/blob/master/google-plus-signin.js

两个应用程序之间唯一不同的是 clientIds - 我拍摄了 2 个屏幕截图 - 每个应用程序 1 个(它们仅在本地部署 - 它们都没有出现在 AppEngine 上,尽管很快就会出现)。这是我正在使用的指令的控制台输出 - 其中第二个是实际的身份验证结果。

1(正常工作的那个) 在此处输入图像描述

2(返回 0 的那个) 在此处输入图像描述

您在输出中看不到成功的原因是因为我的回调如下(这确实是丑陋的代码 - 只是为了测试目的而这样做):

// Callback for Google+ Sign-In
function signinCallback(authResult) {
  console.log(authResult);
  if (authResult['access_token']) {
    console.log('SUCCESS');
  } else if (authResult['error']) {
    console.log('ERROR');
  }
}

在第二个中,authResult 为 0,因此对象中没有属性-我也不确定为什么在回调打印后会发生“异步加载 G+ SDK”-在这两者中,唯一不同的是客户 ID。我正在使用未经编辑的指令(在意识到我在博客中发布的整个帖子通过 Google+ 登录按钮(我当时不知道存在)做得更好之后)


编辑 9/25:

我从 G+ 登录切换回 Javascript oauth2/gapi 登录方法并得到一个更好的错误 - 它给了我一个 401“需要登录”。我想这就是 authenticationResult 给我一个 0 的原因。不知道该怎么办。

4

0 回答 0