国外登录太坑爹了,这里总结一下,做个记录。国外服务器端验证登录的前提是在国外有服务器或者配置了国外服务器代理,这方直接把请求代理到香港服务器。目前收到好几个google,facebook,twitter,line~~~~服务器登录,都没有提现客户端实现。简单贴出部分PHP代码参考,其他语言互通谷歌登录先授权客户端获取idToken,服务端获取授权后直接请求google验证请求https://oauth2.googleapis.com...{idToken}获取用户的Information用于操作自己的业务参考:https://developers.google.com...facebook登录首先从客户端授权https://graph.facebook.com/获取accessToken和faceBookId请求{faceBookId}?access_token={access_token}&fields=id,picture,name”将用户信息与客户端的faceBookId进行比对,供自己业务参考:https://blog.csdn.net/mycwq/a...请求addressinit需要注意Lineloginclient获取idToken[clientreturns:rawString]POST请求https://api.line.me/oauth2/v2...{idToken}&client_id={clientId}返回的数据通过操作其实就是验证idToken的合法性参考:https://developers.line.biz/e...twitter登录twitter比较麻烦先用postman测试,twitter使用OAuth1.0ConsumerKey和ConsumerSecret管理平台获取AccessToken和TokenSecret客户端授权到获取SignatureMethod定值HMAC-SHA1Timestamp时间搓Nonce随机数Versionfixed1.0之前只是测试配置是否正确,粘贴下面的PHP代码:$oauth_signature_method,'oauth_timestamp'=>$oauth_timestamp,'oauth_version'=>$oauth_version_toko'en'>$input_token];ksort($参数);$params=http_build_query($params);//参数,本次请求中除oauth_signature外的所有参数均按字母升序排列,如果参数名称相同,则按照参数值字母升序排列。//$params="oauth_consumer_key={$oauth_consumer_key}&oauth_nonce={$oauth_nonce}&oauth_signature_method={$oauth_signature_method}&oauth_timestamp={$oauth_timestamp}&oauth_version={$oauth_version}";//签名串(text)的结构:HttpMethod&url&参数。(一定是先各个urlencode后再用‘&’相连接)$signature_text=urlencode($httpMethod)。'&'。网址编码($网址)。'&'。urlencode($params);//oauth_consumer_secret&oauth_token_secret$key=$consumerSecret.'&'。$input_token_sec;$oauth_signature=get_signature($signature_text,$key);//echo$oauth_signature.'
';$oauth_signature=urlencode($oauth_signature);//回显$oauth_signature."
";$httpHeader=['授权:OAuth'.'oauth_consumer_key='.$oauth_consumer_key。',oauth_token='。$输入令牌。',oauth_signature_method='.$oauth_signature_method。',oauth_timestamp='.$oauth_timestamp。',oauth_nonce='。$oauth_nonce。',oauth_version='.$oauth_version。',oauth_signature='.$oauth_signature];//echo$httpHeader[0];$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_POST,0);curl_setopt($ch,CURLOPT_HTTPHEADER,$httpHeader);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_TIMEOUT,30);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//自己设置代理curl_setopt($ch,CURLOPT_HTTPPROXYTUNNEL,true);curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);curl_setopt($ch,CURLOPT_PROXYTYPE,CURLPROXY_HTTP);curl_setopt($ch,CURLOPT_PROXY,'127.0.0.1');curl_setopt($ch,CURLOPT_PROXYPORT,1087);$ret=curl_exec($ch);if(false===$ret){$ret=curl_errno($ch);}curl_close($ch);echo$ret;