Войти с учетной записью gmail в Coldfusion

Я хочу войти в систему с учетной записью gmail/google и нашел это руководство Gmail Войдите в систему Coldfusion. Я выполнил все шаги, и после входа в систему моя страница перенаправляется, затем я хочу отобразить информацию о профиле пользователя, поэтому я сбрасываю это

<cfdump var="#session.profilesArray#">

но это дает мне пустой массив. Почему я не получаю данные своего профиля после успешного входа в систему. Если я неправильно получаю свой профиль, то как правильно. Спасибо.


person Community    schedule 28.06.2013    source источник
comment
сбросить всю область сеанса и посмотреть, что там на самом деле.   -  person Dan Bracuk    schedule 28.06.2013
comment
Весь мой сеанс находится в session.profilesArray. Разве не в этом?   -  person    schedule 28.06.2013
comment
profilesArray — это не вся область сеанса. <cfdump var=#session# />   -  person Peter Boughton    schedule 28.06.2013
comment
да, он отображает таблицу дампа, в которой профиль профиля пуст, и еще одна вещь заключается в том, что ga_accesstoken это Authorization Failed: No Google Analytics profiles associated with account. что это такое   -  person    schedule 28.06.2013
comment
правильно ли ga.cfc или в нем есть какая-то ошибка?   -  person    schedule 28.06.2013
comment
Что есть что? Это самоочевидное сообщение об ошибке; проверьте данные используемой учетной записи.   -  person Peter Boughton    schedule 28.06.2013
comment
Я успешно вошел в систему с учетной записью   -  person    schedule 28.06.2013
comment
@DanBracuk, пожалуйста, скажи мне, в чем проблема?   -  person    schedule 28.06.2013
comment
где я могу найти мой access_token? это в Application.cfc?   -  person    schedule 28.06.2013
comment
Таким образом, предположительно, profilesArray создается только в том случае, если ваш вход в систему был успешным. Если ga_accesstoken = Ошибка авторизации, я предполагаю, что ваш вход не удался.   -  person duncan    schedule 28.06.2013
comment
Но я вхожу в систему, и он просит меня разрешить его принять, а затем я принимаю, и страница перенаправляется на мой URL-адрес, который я установил. Если вход в систему не удался, это должно выдать мне какую-то ошибку при входе в систему.   -  person    schedule 28.06.2013
comment
Посмотрите на ga .cfc исходный код - ошибка не логина, ошибка из-за того, что массив пуст. Перезапись session.ga_accessToken с сообщением об ошибке является плохой программой автора ga.cfc; попробуйте сбросить фактический ответ profilesResponse внутри функции ga.cfc parseProfiles и посмотреть, что возвращается - это может иметь другое/лучшее сообщение об ошибке.   -  person Peter Boughton    schedule 28.06.2013
comment
выдает какую-то ошибку в дампе var   -  person    schedule 28.06.2013
comment
может кто-нибудь сказать мне, как я могу получить access_token и как решить мою проблему. Я застрял здесь, пожалуйста, помогите мне решить это   -  person    schedule 28.06.2013


Ответы (1)


Вы просто добавляете эту строку в свой scope Откройте свой Application.cfc, а затем добавьте это изменение кода scope = "https://www.googleapis.com/auth/analytics.readonly" с помощью scope = "https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile

вы можете просто добавить scope = "https://www.googleapis.com/auth/userinfo.profile, но если вы хотите получить доступ к электронной почте, добавьте второй, как я публикую в своем ответе.

     <cfset request.oauthSettings = 
           {scope = "https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile",
                                    client_id = "Your-id",
                                    client_secret = "your-secret",
                                    redirect_uri = "redirect-page",
                                    state = "optional"} />

Теперь вы можете получить информацию о пользователе из функции, которую вы можете вызвать следующим образом.

    <cfscript>              
        public function getProfile(accesstoken) {

            var h = new com.adobe.coldfusion.http();
            h.setURL("https://www.googleapis.com/oauth2/v1/userinfo");
            h.setMethod("get");
            h.addParam(type="header",name="Authorization",value="OAuth #accesstoken#");
            h.addParam(type="header",name="GData-Version",value="3");
            h.setResolveURL(true);
            var result = h.send().getPrefix();
            return deserializeJSON(result.filecontent.toString());
        }       
    </cfscript>

            <cfoutput>
            <cfset show = getProfile(session.ga_accessToken)>
            <cfdump var="#show#">
           </cfoutput>

Надеюсь, что это поможет вам.

person Azam Alvi    schedule 28.06.2013