LinkedIN:阻止自动登录而不要求允许访问(JavaScript)

在我的appliaction中,我使用了linkedIn API来登录。 如果用户已经在相同浏览器中的linkedIn中登录并按下我网站上的linkedin登录按钮,则用户将自动登录到我的网站。 但我想问一下LinkedIn提供的'允许访问'弹出认证窗口。</ p>

编辑:</ strong>使用Samer Bechara回答</ p>

  $(document).ajaxSend(function(event,jqxhr,settings){
if(settings.url ==“https://www.linkedin.com/uas/oauth/authenticate”){
settings.url =“https://www.linkedin.com/uas/oauth/authorize”
}

});
</ code> </ pre>


 &lt; script type =“text / javascript”src =“http://platform.linkedin.com/in.js”&gt; 
api_key:apikey到这里
onLoad: onLinkedInLoad
authorize:false
&lt; / script&gt;

&lt; script type =“text / javascript”&gt;
函数onLinkedInLoad(){
IN.ENV.js.scope = new Array() ;
IN.ENV.js.scope [0] =“r_emailaddress”;
IN.ENV.js.scope [1] =“r_contactinfo”;

// IN.User.authorize();
IN.Event.on(IN,“auth”,onLinkedInAuth);
}

函数onLinkedInAuth(){\ n
IN.API.Profile(“me”)。fields(“id,firstName,lastName,headline,emailAddress,mainAddress,phoneNumbers”)。result(displayProfiles);
}

函数displayProfiles(profiles) {

member = profiles.values [0];
var phs =“”;
var mid = member.id;
var eid = member.emailAddress;
var mad = member.mainAddress; \ n var ln = member.lastName;
var fn = member.firstName;
var json = JSON.stringify(profiles);
var ph = member.phoneNumbers._total;

if(ph&gt; 0 ){
phs = member.phoneNumbers.values [0] .phoneNumber;
}

}

&lt; / script&gt;
</ code> </ pre>
</ DIV>

展开原文

原文

In my appliaction I have used linkedIn API to login. If the user is already loggedIn in the linkedIn in same browser and pressing linkedin login button in my website , the user will automatically loggedin to my website. But i want to ask 'Allow Access' popup authentication window provided by linkedIn.

EDIT : using Samer Bechara answer

$(document).ajaxSend(function(event, jqxhr, settings) {   
    if ( settings.url == "https://www.linkedin.com/uas/oauth/authenticate" ) {
           settings.url = "https://www.linkedin.com/uas/oauth/authorize"   
    } 


 });

<script type="text/javascript" src="http://platform.linkedin.com/in.js">
        api_key: apikey goes here
        onLoad: onLinkedInLoad
      authorize: false
    </script>

    <script type="text/javascript">
      function onLinkedInLoad() {
       IN.ENV.js.scope = new Array();
       IN.ENV.js.scope[0] = "r_emailaddress";
       IN.ENV.js.scope[1] = "r_contactinfo";  

       //IN.User.authorize();
       IN.Event.on(IN, "auth", onLinkedInAuth);
      }




      function onLinkedInAuth() {

        IN.API.Profile("me").fields("id,firstName,lastName,headline,emailAddress,mainAddress,phoneNumbers").result(displayProfiles);
      }

      function displayProfiles(profiles) {

        member = profiles.values[0];
        var phs="";
        var mid =member.id;
        var eid= member.emailAddress;
        var mad= member.mainAddress;
        var ln= member.lastName;
        var fn= member.firstName;
         var json = JSON.stringify(profiles);
         var ph=member.phoneNumbers._total;

         if(ph >0){
          phs=member.phoneNumbers.values[0].phoneNumber;
         }


      }

    </script>

doukongpao0903
doukongpao0903 实际上我需要的是,如果用户已登录到linkedIn.com,他的登录详细信息存在于cookie中。当他来到我的网站而没有清除cookie并只是按下我的linkedIn按钮而没有显示允许访问对话框时,他进入了我的应用程序
7 年多之前 回复
dongtaogou6226
dongtaogou6226 有人说授权:假它会起作用。但实际上它不会
7 年多之前 回复

1个回答



为了实现您的目标,您应该从 https://www.linkedin.com/uas/oauth/authenticate https://www.linkedin.com/uas/oauth/authorize 。 这应该适合你。</ p>

但是,使用基于Javascript的API无法做到这一点,因为出于安全考虑,他们的JS文件是有缺陷的。 唯一的方法是将您的身份验证系统移到服务器端(例如PHP),这样您就可以自己更改授权端点。</ p>

编辑</ strong> </ p>

您可以使用 jQuery.ajaXSend()</ code>方法修改请求。 我没有测试过这个,但应该适合你。 </ p>

  $(document).ajaxSend(function(event,jqxhr,settings){
if(settings.url ==“https://www.linkedin.com/ uas / oauth / authenticate“){
settings.url =”https://www.linkedin.com/uas/oauth/authorize“
}
});
</ code> </ pre> \ n </ div>

展开原文

原文

In order to achieve what you want, you should change your OAuth endpoint from https://www.linkedin.com/uas/oauth/authenticate to https://www.linkedin.com/uas/oauth/authorize. This should work for you.

However, this cannot be done using the Javascript-based API, because their JS file is obsfucated, for security purposes. The only way to do so is to move your authentication system to the server side (e.g. PHP), which allows you to change the authorization endpoint yourself.

Edit

You can use the jQuery.ajaXSend() method as follows to modify the request. I haven't tested this, but should work for you.

$(document).ajaxSend(function(event, jqxhr, settings) {   
    if ( settings.url == "https://www.linkedin.com/uas/oauth/authenticate" ) {
           settings.url = "https://www.linkedin.com/uas/oauth/authorize"   
    } 
});

doufu5401
doufu5401 代码尚未经过测试,这是一个例子。 你需要从那里拿走它。 无论如何,就像我之前所说的那样,最好的方法是使用服务器端API。
7 年多之前 回复
dousu5608
dousu5608 我尝试了你的代码,仍然无法阻止它
7 年多之前 回复
dov6891
dov6891 您可以使用jQuery .ajaxSend方法来操作ajax请求。 虽然没有测试过这个。 更新我的答案以反映变化..
7 年多之前 回复
donglei7152
donglei7152 所以在JavaScript中没有选择吗?
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问