如何手动触发默认Google登录按钮的呈现

时间:2015-08-26 18:09:06

标签: angularjs google-oauth

这是我问题的simple example

我按照找到的here教程使用默认的Google登录按钮。我已经包含了Angular应用程序中所需的所有资源。该按钮包含在包含登录选项的视图中。

// Use below to any method
// check for internet connection
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];

internetReachability = [Reachability reachabilityForInternetConnection];
[internetReachability startNotifier];


-(void) checkNetworkStatus:(NSNotification *)notice {
    // called after network status changes
    NetworkStatus internetStatus = [internetReachability currentReachabilityStatus];

    switch (internetStatus) {
        case NotReachable: {
            NSLog(@"The internet is down.");
            break;
        }

        case ReachableViaWiFi: {
            NSLog(@"The internet is working via WIFI.");
            //Remove Observer
            [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];

            //Write your code                
            break;
        }

        case ReachableViaWWAN: {
            NSLog(@"The internet is working via WWAN.");
            break;
        }
    }
}

何时起作用

当使用网站的初始加载加载该部分视图时,一切都运行得非常好。

当它没有

在初始页面加载后加载包含按钮的局部视图时(例如,有人在初始加载后导航到注册页面),不会呈现该按钮。显然当按钮出现时我会自动连接某些按钮,当按钮仅在以后可用时我需要手动触发,但在使用默认按钮时,我在任何地方都看不到任何文档。我需要打电话给按钮上的gapi是否有功能?

作为旁注

我无法弄清楚为什么我在google oauth遇到这么多麻烦。我觉得我错过了一个基本的概念,让我无法自己弄清楚任何东西,所以如果有资源你会建议我读到它真的得到它(特别是在整合方面)进入角度应用程序),我非常感谢指针。

1 个答案:

答案 0 :(得分:3)

http://jsfiddle.net/sonicblis/12jpL138/3/

关键是使用gapi.signin2.render创建按钮,顺便提一下,您还可以在角度控制器的范围内运行,这非常棒。

通过使按钮成为占位符,如下所示:

<div id="googleButtonPlaceholder"></div>

然后我可以使用gapi的渲染功能来引用它并将其全部连接起来,这会调用库自动记录用户的所有自动身份验证内容以及诸如此类的东西。这极大地简化了我的角度应用程序。

$window.gapi.signin2.render('googleButtonPlaceholder', {
    'scope': 'https://www.googleapis.com/auth/plus.login',
    'width': 200,
    'height': 50,
    'longtitle': true,
    'theme': 'dark',
    'onsuccess': $scope.federateWithGoogle
});