Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Авторизация через вконтакте, как получить доступ к емайл?

Featured Replies

Posted

В версии 3.4.6 при регистрации на форуме через вконтакте, пользователю необходимо набирать свой емайл, но в 4 версии и на некоторых форумах 3 версии есть мгновенный доступ к электронному адресу, вот пример:

hgv.thumb.png.2f34d7da6ec63de5e4cc9bb281

Я так понимаю в этом файле нужно что-то менять? Кто-нибудь сталкивался и знает, что именно?

<?php
require_once( dirname(__FILE__) . '/OAuth2Client.php' );

class vkClient extends OAuth2Client
{
    
    private $_allowed_scopes = array(
        'notify',       // Пользователь разрешил отправлять ему уведомления.
        'friends',      // Доступ к друзьям.
        'photos',       // Доступ к фотографиям.
        'audio',        // Доступ к аудиозаписям.
        'video',        // Доступ к видеозаписям.
        'notes',        // Доступ заметкам пользователя.
        'pages',        // Доступ к wiki-страницам.
        'offers',       // Доступ к предложениям (устаревшие методы).
        'questions',    // Доступ к вопросам (устаревшие методы).
        'wall',         // Доступ к обычным и расширенным методам работы со стеной.
        'messages',     // (для Standalone-приложений) Доступ к расширенным методам работы с сообщениями.
        'offline',      // Доступ к API в любое время со стороннего сервера.  
    );
    
    public function __construct($config = array()) 
    {
        $configured_scopes = array( 'offline' );
        
        if ( isset($config['scope']) )
        {
            $config_scopes = array_map( 'trim', explode(',', $config['scope']) );

            foreach( $config_scopes as $scope )
            {
                if ( in_array( $scope, $this->_allowed_scopes ) )
                {
                    $configured_scopes[] = $scope;
                }
            }
            
            unset( $config['scope'] );
        }
        
        $this->setVariable( 'scope', implode(',', $configured_scopes) );
        
        parent::__construct($config);
    }
    
    /**
     * Получение ссылки на авторизацию
     *
     * @link http://vk.com/developers.php?o=-1&p=%C0%E2%F2%EE%F0%E8%E7%E0%F6%E8%FF%20%F1%E0%E9%F2%EE%E2
     */
    public function getAuthorizeUrl($params = array())
    {
        $params = array_merge(
            array(
                'client_id'     => $this->getVariable('client_id'),
                // здесь возможно нужен urlencode + уникальный ключ пользователя
                'redirect_uri'  => $this->getVariable('authorize_callback_uri'),
                'response_type' => ( $this->getVariable('logintype') == 'client' ) ? 'token' : 'code',
                'scope'         => $this->getVariable( 'scope' ),
        ), $params);
        
        return $this->getUri( $this->getVariable('authorize_uri'), $params);
    }
        
    /**
    * Авторизационный сервер vkontakte нам какбы отвечает
    * {"access_token":"533bacf01e11f55b536a565b57531ac114461ae8736d6506a3", "expires_in":43200, "user_id":6492}
    *
    * @link http://vk.com/developers.php?o=-1&p=%C0%E2%F2%EE%F0%E8%E7%E0%F6%E8%FF%20%F1%E0%E9%F2%EE%E2
    */
    protected function getSessionObject($access_token = NULL) 
    {
      $session = NULL;

      // Готовим данные для куки
      if (!empty($access_token) && isset($access_token['access_token'])) {
        $session['access_token'] = $access_token['access_token'];
        $session['expires'] = ( isset($access_token['expires_in']) && $access_token['expires_in'] ) ? time() + $access_token['expires_in'] : time() + $this->getVariable('expires_in', OAUTH2_DEFAULT_EXPIRES_IN);
        $session['refresh_token'] = isset($access_token['refresh_token']) ? $access_token['refresh_token'] : '';
        $session['user_id'] = isset($access_token['user_id']) ? $access_token['user_id'] : 0;

        $sig = self::generateSignature(
          $session,
          $this->getVariable('client_secret')
        );
        $session['sig'] = $sig;
      }

      return $session;
    }

    /**
     * У vkontakte вместо oauth_token имеем access_token
     *
     * @link http://vk.com/developers.php?o=-1&p=%C2%FB%EF%EE%EB%ED%E5%ED%E8%E5%20%E7%E0%EF%F0%EE%F1%EE%E2%20%EA%20API
     */
    protected function makeOAuth2Request($path, $method = 'GET', $params = array()) 
    {
      if ((!isset($params['access_token']) || empty($params['access_token'])) && $oauth_token = $this->getAccessToken()) 
      {
        $params['access_token'] = $oauth_token;
      }
      return $this->makeRequest($path, $method, $params);
    }
}

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.