Android -- 集成新浪微博第三方登录

一. 配置

SDK 地址:https://github.com/sinaweibosdk/weibo_android_sdk

下载下来在lib下有一个.aar文件,copy到你项目下的lib中

权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在model下的build.gradle,在android外添加以下:

repositories {
    flatDir {
        dirs 'libs'
    }
}

在dependencies中添加:

compile 'com.sina.weibo.sdk:core:4.1.0:openDefaultRelease@aar'

在AndroidMainfest.xml中添加 :

<meta-data
    android:name="WEIBO_APPKEY"
    android:value="0123456789" />    //新浪微博APP_KEY
<meta-data
    android:name="WEIBO_CHANNEL"
    android:value="weibo" />

二. 实现

Constants.class

package com.example.thridlogin;

/**
 * 该类定义了微博授权时所需要的参数。
 * 
 * @author SINA
 * @since 2013-09-29
 */
public interface Constants {

    //2045436852
    /** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
    public static final String APP_KEY = "0123456789    ";    

    /** 
     * 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
     * 
     * <p>
     * 注:关于授权回调页对移动客户端应用来说对用户是不可见的,所以定义为何种形式都将不影响,
     * 但是没有定义将无法使用 SDK 认证登录。
     * 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
     * </p>
     */
    public static final String REDIRECT_URL = "https://api.weibo.com/oauth2/default.html";    //默认URL

    /**
     * Scope OAuth2.0 授权机制中 authorize 接口的一个参数。通过 Scope,平台将开放更多的微博
     * 核心功能给开发者,同时也加强用户隐私保护,提升了用户体验,用户在新 OAuth2.0 授权页中有权利
     * 选择赋予应用的功能。
     * 
     * 我们通过新浪微博开放平台-->管理中心-->我的应用-->接口管理处,能看到我们目前已有哪些接口的
     * 使用权限,高级权限需要进行申请。
     * 
     * 目前 Scope 支持传入多个 Scope 权限,用逗号分隔。
     * 
     * 有关哪些 OpenAPI 需要权限申请,请查看:http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI
     * 关于 Scope 概念及注意事项,请查看:http://open.weibo.com/wiki/Scope
     */
    public static final String SCOPE =
            "email,direct_messages_read,direct_messages_write,"
            + "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
            + "follow_app_official_microblog," + "invitation_write";
   // public static final String SCOPE = null;
}

MyApplication.class

import android.app.Application;

import com.sina.weibo.sdk.WbSdk;
import com.sina.weibo.sdk.auth.AuthInfo;

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        initWebSDK();
    }

    //新浪微博初始化,对应的参数分别是app_key,回调地址,和权限
    private void initWebSDK() {
        WbSdk.install(this, new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL,
                Constants.SCOPE));
    }
}

MainActivity.class:

定义:

private SsoHandler mSsoHandler;
private Oauth2AccessToken mAccessToken;

oncreate中初始化:

mSsoHandler = new SsoHandler(MainActivity.this);

按钮事件中调用:

mSsoHandler.authorizeClientSso(new SelfWbAuthListener());

SelfWbAuthListener 方法:

private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener {
    @Override
    public void onSuccess(final Oauth2AccessToken token) {
        MainActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                mAccessToken = token;
                if (mAccessToken.isSessionValid()) {
                    // 保存 Token  SharedPreferences
                    AccessTokenKeeper.writeAccessToken(MainActivity.this, mAccessToken);
                    Toast.makeText(MainActivity.this, "授权成功", Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(MainActivity.this, SecondActivity.class));
                }
            }
        });
    }

    @Override
    public void cancel() {
        Toast.makeText(MainActivity.this, "取消授权", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onFailure(WbConnectErrorMessage errorMessage) {
        Toast.makeText(MainActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
    }
}

onActivityResult :

if (requestCode == 32973){        //验证微博登录是requestCode是32973,便于跟别的回调分开处理
    if (mSsoHandler != null) {
        mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
    }
}

三. 新浪微博控制应用设置


这里需要跟应用的包名一致,并通过工具分成对应的签名文件,这里错误,无法实现登录。

The end !




猜你喜欢

转载自blog.csdn.net/qq_26446715/article/details/80407506
今日推荐