第三方授权登陆

第三登陆如果用每个平台的sdk的话感觉太累,刚好有免费的集成 了很多平台授权登陆的一个sdk,

就用这个了。。地址如下:http://sharesdk.cn/

@1首先,我们要做的就是在这个网站注册一个账号,获取到ShareSDK的Appkey。这个后边要用到。

之后,我们要到我们需要的第三方平台那里注册为开发者,然后添加应用,就能获取到如下的2个值

App Key:801493335

App Secret:ee15353c574beddb0c3333326b

然后下载sharesdk这个网站给我们提供的sdk,我用的android,下载完解压如下4个文件夹。

第三方授权登陆_第1张图片

第三个是个demo,大家看以自己放到自己的eclipse上看看,功能很多,因为我就用个授权登陆,用不到分享,所以就简单了许多。以后用到了再写下自己的经验。

我们现在就打开第一个文件夹 ,里边有个名字为execute this file to generate a quick integrate ShareSDK directory的exe文件,大家点击运行,弹出个dos窗口。如下

第三方授权登陆_第2张图片

 

第一个,起个名字,自己随便起了。 后边的看自己需要,如果用到分享的,就yes,因为我不需要,所以都no了。 看到后边的提示后就可以在 exe这个文件所在的目录下找到一个以上边自己起的项目名称命名的一个文件夹,里边就是我们需要的东西。。我们把里边的东西复制到我们的工程里边就行了。

里边的架包很多平台的,自己留下自己需要的平台的,不需要的可以不用。如果你不确定就都留着,反正也不大。

第三方授权登陆_第3张图片

好了,如果上边的你都复制到自己的eclipse里的工程文件里了,那么,现在打开assets下的ShareSDK.xml文件,如下图,里边说明很详细了,替换成我们最开始申请的key

第三方授权登陆_第4张图片


   AppKey="填写您在ShareSDK上注册到的AppKey" />


   SortId="此平台在您分享列表中的位置,整型,数值越大越靠后"
   AppKey="填写您在新浪微博上注册到的AppKey"
   AppSecret="填写您在新浪微博上注册到的AppSecret"
   Id="自定义字段,整型,用于您项目中对此平台的识别符"
   RedirectUrl="填写您在新浪微博上注册的RedirectUrl"
   ShortLinkConversationEnable="布尔值,标记是否作短链转换"
   Enable="布尔值,标记此平台是否有效" />

 

@2现在配置AndroidManifest.xml,增加必要的权限,一般这些我们都会有的,

android:name="android.permission.GET_TASKS" />
android:name="android.permission.INTERNET" />
android:name="android.permission.ACCESS_WIFI_STATE" />
android:name="android.permission.ACCESS_NETWORK_STATE" />
android:name="android.permission.CHANGE_WIFI_STATE" />
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
android:name="android.permission.READ_PHONE_STATE" />
android:name="android.permission.MANAGE_ACCOUNTS"/>
android:name="android.permission.GET_ACCOUNTS"/>

 

在application下注册下面的Activity:


   android:name="cn.sharesdk.framework.ShareSDKUIShell"
   android:theme="@android:style/Theme.Translucent.NoTitleBar"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:screenOrientation="portrait"
   android:windowSoftInputMode="stateHidden|adjustResize" />

 

下边2个我用不到,因为我没用微信,易信的,如果你用到了就增加下边2个

,如果您的项目集微信或者微信朋友圈,则需要在application下注册下面的回调Activity:


   android:name=".wxapi.WXEntryActivity"
   android:theme="@android:style/Theme.Translucent.NoTitleBar"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:exported="true"
   android:screenOrientation="portrait" />

而如果您的项目集易信的两个平台,则需要在application下注册下面的回调Activity:


   android:name=".yxapi.YXEntryActivity"
   android:theme="@android:style/Theme.Translucent.NoTitleBar"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:exported="true"
   android:screenOrientation="portrait" />

这两个类的路径是需要根据您项目的包名来确定,如果路径错误,您将收不到微信和易信客户端的操作回调,因此ShareSDK也无法给予您操作回调。为了避免出错,请使用相对路劲的方式,直接复制上面的代码到您的AndroidManifest.xml中即可

 

@3 现在开始在代码中使用了。。

首先程序的入口activity增加如下

ShareSDK.initSDK(this);

退出的时候调用 ShareSDK.stopSDK(this);

这2个其实就是用来统计用户的登陆使用的次数的,

好了,主要的来了,如何进行第三授权了?非常简单了。

第一步获取我们需要的平台对象,比如腾讯微博,2种方法

Platform platform3=ShareSDK.getPlatform(this, TencentWeibo.NAME);

或者Platform platform4=new TencentWeibo(this);

然后:platform3.setPlatformActionListener(actionListener);

//设置一个监听器,用来处  理返回的信息
   platform3.authorize();//获取授权

说明下:调用这个方法是会弹出一个登陆的授权界面的。完事,返回的信息都在参数arg0里,也就是下边Platform对象。而HashMap arg2是空的。

静听器如下:

 private PlatformActionListener actionListener = new PlatformActionListener() {

  @Override
  public void onError(Platform arg0, int arg1, Throwable arg2) {

  }

  @Override
  public void onComplete(Platform plat, final int action,
    final HashMap arg2) {
   platform = plat;
   System.out.println("hashmap="+arg2);
   System.out.println("platform name==" + plat.getName());
   System.out.println("platform platformNname=="
     + plat.getDb().getPlatformNname());
   System.out.println("platform id==" + plat.getDb().getUserId());
   System.out.println("platform sex==" + plat.getDb().getUserGender());
   System.out.println("platform username=="
     + plat.getDb().getUserName());
   System.out.println("platform expires="+plat.getDb().getExpiresIn());
   System.out.println("platform expires time=="
     + plat.getDb().getExpiresTime());
    updata(plat);
    
  }

  @Override
  public void onCancel(Platform arg0, int arg1) {
   // TODO Auto-generated method stub

  }
 };

介绍下平台的一些方法。

首先说明下,如果你授权成功以后,授权的信息是保存在本地的。除非你取消授权。如下,isvalid用来判断是否已经授权,第一个方法获取的id就是我们在assets下边的xml文件里定义的每个平台的id,

后边是我们要的数据,比如性别,昵称,头像,userid---我们就用这个来做第三方的识别。

if(platform4.isValid()){
    tv1.setText("id="+platform4.getId()
      +"\nsex="+platform4.getDb().getUserGender()
      +"\nusername="+platform4.getDb().getUserName()
      +"\nuserid="+platform4.getDb().getUserId()
      +"\nusericon="+platform4.getDb().getUserIcon());
    return;
    //platform4.removeAccount();//如果授权的话,取消授权
   }

==================

另外还有获取第三方账号信息的,比如qq返回的就是黄钻等级,头像地址,性别,昵称等。。

调用如下的方法

Platform platform4=new TencentWeibo(this);

platform4.setPlatformActionListener(actionListener);

platform4.showUser(null);其中参数null表示获取的是自己的

这个监听器也和上边的一样,区别如下,

@1如果是已经授权的状态下,这个是没有那登陆界面的,没有授权的状态下才会弹出授权登陆界面。

@2这个返回的用户信息是存储在HashMap arg2里边的,大家看以直接log看看结果是啥。

========最后说明下,这个qq和qq空间用同一个就行,qq那个没反应。就用new QZone(this)就行,2个数据是一样的。

 

 

你可能感兴趣的:(Andoid学习笔记)