[目前插件已经支持到Phonegap 3.5]
我们再开发app过程中,不断有各种需求。业务的处理也越来越简洁。
第三方登陆就是微了再app中通过第三方账号来快速完成注册登陆的过程。
通过几天的折腾和开发,终于完成了第三方登陆插件。
该插件是基于百度社会化sdk来完成。
该插件封装了的模块包括支持新浪微博,腾讯微博,QQ空间,开心网,人人网,百度等社交平台的授权。
具体如何设置登陆信息请到百度开发者中心设置。
http://developer.baidu.com/wiki/index.php?title=docs/social/guide/web_login/web_login3。
该插件兼容,百度社会化分享插件,百度推送,百度定位,百度地图等百度系模块插件。
如果已经集成了百度社会化分享插件,集成第三方登陆插件就非常简单。
可以忽略掉 第2 第 3第 5第 6步骤。
1.下载插件包。
2. 解压所下载的包,从lib目录中得到所需要的所有的库:
Baidu-SocialShare-SDK-Android-2.0.0.jar
添加到你的项目中。
3. 修改AndroidManifest.xml,增加以下权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
4. 在AndroidManifest.xml中增加jar中需要的Activity。
<activity android:name="com.baidu.cloudsdk.social.oauth.SocialOAuthActivity" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> </activity> <activity android:name="com.baidu.cloudsdk.social.share.handler.LocalShareActivity" android:launchMode="singleTask"> </activity> <activity android:name="com.baidu.cloudsdk.social.share.handler.QQFriendShareReceiverActivity" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent此处为腾讯开放平台APPKey" /> </intent-filter> </activity>
5.拷贝src文件夹里面的java文件到你的src中.
6. 拷贝assert目录下config.json文件到你的项目对应文件夹里面。并修改为自己的信息。
{ client_ids: { baidu:"填写在百度开发者中心注册的app key", sinaweibo:"填写在微博开放平台注册的app key", qqdenglu:"填写在腾讯开放平台注册的app key", qqfriend:"填写在腾讯开放平台注册的app key", weixin:"填写在微信开放平台注册的app key" }, client_names: { qqfriend:"分享给qq好友所要显示的应用名称" }, supported_medias: ["sinaweibo","qqweibo","qqdenglu","kaixin","renren","qqfriend","weixin","weixin_timeline","email","sms"] }
这些信息可以参考百度开发者中心帮助文档来申请。
具体的如何设置可以看他们的帮助文档。
7.在config.xml文件下面引入插件.
2.x 和3.x 的插件添加代码是不同的,一点注意!具体可以参考官网。
2.x插件引入方法:
<plugin name=”Pgbaidulogin” value=”com.breadth.pgtest.Pgbaidulogin”/>
3.x插件引入方法:
<feature name=”Pgbaidulogin”>
<param name=”android-package” value=”com.xhuayi.dgoula.Pgbaidulogin” />
</feature>
8. 修改html代码
引入Pgbaidulogin.js文件到主文件里面index.html
function sina(){
window.plugins.Pgbaidulogin.sina(
function(success) {
alert(success);
var data = JSON.parse(success) ;
$(“#info”).css(“display”,”block”);
$(“#headerimg”).attr(“src”,data.tinyurl);
$(“.username”).html(data.username);
$(“.sex”).html(data.sex);
$(“.city”).html(data.province+data.city);
$(“.media_type”).html(data.media_type);
$(“.social_uid”).html(data.social_uid);
}, function(fail) {
alert(“encoding failed: ” + fail);
}
);}
function kaixin(){
window.plugins.Pgbaidulogin.kaixin(
function(success) {
alert(success);var data = JSON.parse(success) ;
$(“#info”).css(“display”,”block”);
$(“#headerimg”).attr(“src”,data.tinyurl);
$(“.username”).html(data.username);
$(“.sex”).html(data.sex);
$(“.city”).html(data.province+data.city);
$(“.media_type”).html(data.media_type);
$(“.social_uid”).html(data.social_uid);
}, function(fail) {
alert(“encoding failed: ” + fail);
}
);}
function qq(){
window.plugins.Pgbaidulogin.qq(
function(success) {
alert(success);
var data = JSON.parse(success) ;
$(“#info”).css(“display”,”block”);
$(“#headerimg”).attr(“src”,data.tinyurl);
$(“.username”).html(data.username);
$(“.sex”).html(data.sex);
$(“.city”).html(data.province+data.city);
$(“.media_type”).html(data.media_type);
$(“.social_uid”).html(data.social_uid);
}, function(fail) {
alert(“encoding failed: ” + fail);
}
);}
function qqweibo(){
window.plugins.Pgbaidulogin.qqweibo(
function(success) {
alert(success);
var data = JSON.parse(success) ;
$(“#info”).css(“display”,”block”);
$(“#headerimg”).attr(“src”,data.tinyurl);
$(“.username”).html(data.username);
$(“.sex”).html(data.sex);
$(“.city”).html(data.province+data.city);
$(“.media_type”).html(data.media_type);
$(“.social_uid”).html(data.social_uid);
}, function(fail) {
alert(“encoding failed: ” + fail);
}
);}
function renren(){
window.plugins.Pgbaidulogin.renren(
function(success) {
alert(success);
var data = JSON.parse(success) ;
$(“#info”).css(“display”,”block”);
$(“#headerimg”).attr(“src”,data.tinyurl);
$(“.username”).html(data.username);
$(“.sex”).html(data.sex);
$(“.city”).html(data.province+data.city);
$(“.media_type”).html(data.media_type);
$(“.social_uid”).html(data.social_uid);
}, function(fail) {
alert(“encoding failed: ” + fail);
}
);}
function baidu(){
window.plugins.Pgbaidulogin.baidu(
function(success) {
alert(success);
var data = JSON.parse(success) ;
$(“#info”).css(“display”,”block”);
$(“#headerimg”).attr(“src”,data.tinyurl);
$(“.username”).html(data.username);
$(“.sex”).html(data.sex);
$(“.city”).html(data.province+data.city);
$(“.media_type”).html(data.media_type);
$(“.social_uid”).html(data.social_uid);
}, function(fail) {
alert(“encoding failed: ” + fail);
}
);
}
这里的方法是我自己测试用的,可以自己选用,
再处理登陆后如何和自己的用户体系绑定账号,从而达到登陆后直接注册用户。
请看我上一篇文章: 第三方平台账号登入流程总结
我这里已经提供一个social_uid 作为用户唯一id标示。当用户登陆后将此值和自己的用户体系的id绑定注册一个新用户。
这样当用户下次再用同样的第三方账号登陆,就直接登陆app。
注意:第三方登陆后,社会化分享时候用到的账信息就已经存在不需要再登陆后再分享!
转载请注明:夜阑小雨 » phonegap-第三方登陆-andriod插件