aws+wordpress_在WordPress中添加Google+登录

aws+wordpress

This tutorial is aimed at WordPress developers who want to add a Google+ login to their WordPress theme. For themes built for eCommerce, forums and other sites that require users to login, providing the option for a Google+ login button makes the registration and login process both faster and easier for users as they don’t have to complete a form.

本教程针对想要将Google+登录名添加到其WordPress主题的WordPress开发人员。 对于为电子商务,论坛和其他需要用户登录的网站而构建的主题,提供Google+登录按钮选项可以使用户不必填写表格即可更快,更轻松地完成注册和登录过程。

Google+ Sign-In example on Flixster

Google+ Sign-In example on Flixster

Flixster上的Google+登录示例

Google+ OAuth WordPress库 (The Google+ OAuth WordPress Library)

I have created a Google+ OAuth library for WordPress which handles all of the tough tasks of the Google+ OAuth login.

我已经为WordPress创建了Google+ OAuth库,可以处理Google+ OAuth登录的所有艰巨任务。

This library also creates the necessary REST API URLs required for Google+ login (official Google documentation refers to this as the Google+ Sign-In).

该库还会创建Google+登录所需的必要REST API URL(Google的官方文档将其称为Google+登录 )。

Once you’ve downloaded the zip file above, extract the contents into your theme folder. Now you will have an /inc directory in your theme folder which has all necessary files for a Google+ login.

下载完上面的zip文件后,将内容提取到主题文件夹中。 现在,您的主题文件夹中将有一个/inc目录,其中包含用于Google+登录的所有必需文件。

加载Google+ OAuth WordPress库 (Loading the Google+ OAuth WordPress Library)

Now you need to load the library into WordPress. Inside your theme’s functions.php file, just include the following:

现在您需要将库加载到WordPress中。 在主题的functions.php文件中,只需包含以下内容:

require_once("inc/googleplusoauth.php");

重定向用户 (Redirecting Users)

Next, when user clicks on the ‘Sign In with Google+’ button, you need to redirect user:

接下来,当用户点击“使用Google+登录”按钮时,您需要重定向用户:

site_url() . "/wp-admin/admin-ajax.php?action=googleplus_oauth_redirect"

This URL will handle all of the core functionality of ‘Sign In with Google+’. Once the user has been logged in, the user will be redirected to the homepage of the website.

该网址将处理“使用Google+登录”的所有核心功能。 一旦用户登录,该用户将被重定向到网站的主页。

创建和安装Google+应用 (Creating and Installing a Google+ App)

Users who install your theme need to create a Google Developer Project and enable Google+ API.

安装主题的用户需要创建一个Google Developer Project并启用Google+ API。

When enabling Google+ API, it asks for a callback URL. Users will have to use the following as the callback URL:

启用Google+ API时,它将要求提供回调URL。 用户将必须使用以下内容作为回调URL:

get_site_url() . "/wp-admin/admin-ajax.php?action=googleplus_oauth_callback"

Once they have enabled the Google+ API, they need to copy the Project name, API key and Secret Key from the project dashboard and store them as WordPress options.

启用Google+ API后,他们需要从项目信息中心复制项目名称,API密钥和秘密密钥,并将其存储为WordPress选项。

You can use the following option names to store the options values:

您可以使用以下选项名称来存储选项值:

update_option("googleplus_client_id", $client_id_variable);
update_option("googleplus_client_secret", $client_secret_variable);
update_option("googleplus_app_name", $app_name_variable);

This is all you need to do to have a Google+ login button integrated with your theme.

这是将主题集成到Google+登录按钮所需要做的一切。

Now let’s create a Google+ Login widget which displays a Google+ login button.

现在,让我们创建一个显示Google+登录按钮的Google+登录小部件。

创建一个Google+登录小部件 (Creating a Google+ Login Widget)

In this section, I’ll list the code for creating a Google+ login widget. You can also put this code inside a plugin if you wish. You’ll just need to make sure that you include the Google+ OAuth WordPress library with your plugin.

在本部分中,我将列出用于创建Google+登录小部件的代码。 您也可以根据需要将此代码放入插件中。 您只需要确保插件中包含Google+ OAuth WordPress库即可。

<?php

require_once("inc/googleplusoauth.php");

class Google_Plus_Login_Widget extends WP_Widget 
{
    public function __construct() 
    {
        parent::__construct("Google_Plus_login_widget", "Google Plus Login", array("description" => __("Display a Google+ Login Button")));
    }
        
    public function form( $instance ) 
    {
        // Check values
        if($instance) 
        {
            $title = esc_attr($instance['title']);
            $api_key = $instance['api_key'];
            $secret_key = $instance['secret_key'];
            $googleplus_app_name = $instance['googleplus_app_name'];
        } 
        else 
        {
            $title = '';
            $api_key = '';
            $secret_key = '';
            $googleplus_app_name = '';
        }
        ?>

        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>"><?php echo "Title"; ?></label>  
            <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
        </p>

        <p>
            <label for="<?php echo $this->get_field_id('api_key'); ?>"><?php echo "Client Id"; ?></label>
            <input type="text" class="widefat" id="<?php echo $this->get_field_id('api_key'); ?>" name="<?php echo $this->get_field_name('api_key'); ?>" value="<?php echo $api_key; ?>" />
        </p>
        
        <p>
            <label for="<?php echo $this->get_field_id('secret_key'); ?>"><?php echo "Client Secret"; ?></label>
            <input type="text" class="widefat" id="<?php echo $this->get_field_id('secret_key'); ?>" name="<?php echo $this->get_field_name('secret_key'); ?>" value="<?php echo $secret_key; ?>" />
        </p>

        <p>
            <label for="<?php echo $this->get_field_id('googleplus_app_name'); ?>"><?php echo "App Name"; ?></label>
            <input type="text" class="widefat" id="<?php echo $this->get_field_id('googleplus_app_name'); ?>" name="<?php echo $this->get_field_name('googleplus_app_name'); ?>" value="<?php echo $googleplus_app_name; ?>" />
        </p>

        <p>
            While creating a Twitter app use "<?php echo get_site_url() . '/wp-admin/admin-ajax.php?action=googleplus_oauth_callback'  ?>" as callback URL.
        </p>

        <?php
    }
        
    public function update( $new_instance, $old_instance ) 
    {
        $instance = $old_instance;
        $instance['title'] = strip_tags($new_instance['title']);
        $instance['api_key'] = strip_tags($new_instance['api_key']);
        $instance['secret_key'] = strip_tags($new_instance['secret_key']);
        $instance['googleplus_app_name'] = strip_tags($new_instance['googleplus_app_name']);
        update_option("googleplus_client_id", $new_instance['api_key']);
        update_option("googleplus_client_secret", $new_instance['secret_key']);
        update_option("googleplus_app_name", $new_instance['googleplus_app_name']);
        return $instance;
    }
        
    public function widget( $args, $instance ) 
    {
        extract($args);
        
        $title = apply_filters('widget_title', $instance['title']);
        echo $before_widget;
        
        if($title) 
        {
            echo $before_title . $title . $after_title ;
        }
        
        if(is_user_logged_in()) 
        {
            ?>
                <a href="<?php echo wp_logout_url( get_permalink() ); ?>" title="Logout"><input type="button" value="Logout" /></a>
            <?php
        }
        else
        {
            ?>
                <a href="<?php echo site_url() . '/wp-admin/admin-ajax.php?action=googleplus_oauth_redirect'; ?>"><input type="button" value="Login Using Google+" /></a>
            <?php
        }
        echo $after_widget;
    }
}
register_widget("Google_Plus_Login_Widget");

Let’s look at how the above code works:

让我们看一下上面的代码是如何工作的:

  • We first included the Google+ OAuth library

    我们首先包含了Google+ OAuth库
  • Then we created a widget that displays a login button on the front-end and displays the keys input boxes on backend

    然后,我们创建了一个小部件,该小部件在前端显示一个登录按钮,并在后端显示键输入框
  • When users submit the widget form on the backend the values are saved as WordPress options

    当用户在后端提交窗口小部件表单时,值将另存为WordPress选项
  • When someone clicks on the Google+ login button on the front-end of the widget, the users are redirected to the ‘Redirect URL’ as mentioned above

    当有人点击窗口小部件前端的Google+登录按钮时,用户将被重定向到如上所述的“重定向URL”
  • The redirected URL handles all the login task

    重定向的URL处理所有登录任务

进行Google+ REST API调用 (Making Google+ REST API Calls)

Once you have a user logged in you will get an access token which acts as a permission to post and retrieve a user’s data in Google+.

登录用户后,您将获得访问令牌,该访问令牌可作为在Google+中发布和检索用户数据的权限。

The access token is unique to every user, therefore this library stores it as user metadata. You can retrieve it by using the following:

访问令牌对于每个用户都是唯一的,因此该库将其存储为用户元数据。 您可以使用以下方法检索它:

get_user_meta(get_current_user_id(), "googleplus_access_token", true)

Now you can make Google+ REST API calls by passing this token in HTTP Authorization request header.

现在,您可以通过在HTTP授权请求标头中传递此令牌来进行Google+ REST API调用。

令牌到期 (Token Expiration)

Access tokens have a limited lifetime and can become invalid due to several reasons. If you’re receiving an invalid access token error while making REST API calls then you’ll need to get a new access token by making the user login again.

访问令牌的寿命有限,由于多种原因可能会变得无效。 如果在进行REST API调用时收到无效的访问令牌错误,则需要通过再次登录用户来获取新的访问令牌。

结论 (Conclusion)

We’ve learned how to create a Google+ login button. If you integrate it in your theme then you can place this button anywhere, but if it’s in a plugin then you’ll need to put in a widget.

我们已经了解了如何创建Google+登录按钮。 如果将其集成到主题中,则可以将该按钮放置在任何位置,但是如果它在插件中,则需要放入小部件。

If you’re interested in more information on the topic, here are some other helpful resources:

如果您对有关该主题的更多信息感兴趣,请参见以下其他有用资源:

If you have any feedback, or use the above method or something similar in a project yourself, please let me know by commenting below.

如果您有任何反馈意见,或者您自己在项目中使用了上述方法或类似方法,请在下面评论中告知我。

翻译自: https://www.sitepoint.com/adding-a-google-sign-in-to-wordpress/

aws+wordpress

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值