第三方登录之QQ登录集成(一)

首先还是得先到QQ的开发平台下载SDK和Demo,先导入eclipse观察,然后决定哪些资源导入AS

先看以WebView方式登录QQ的集成

1.导入资源


2.配置清单文件

配置权限和activity

 

3.调用SDK的方法

/**
	 * 打开登录认证与授权页面
	 * 
	 * @param String
	 *            clientId 申请时分配的appid
	 * @param String
	 *            target 打开登录页面的方式:“_slef”以webview方式打开; "_blank"以内置安装的浏览器方式打开
	 * @author John.Meng<arzen1013@gmail> QQ:3440895
	 * @date 2011-9-5
	 */
	private void auth(String clientId, String target) {
		Intent intent = new Intent(TAuthDemoActivity.this, com.tencent.tauth.TAuthView.class);

		intent.putExtra(TAuthView.CLIENT_ID, clientId);
		intent.putExtra(TAuthView.SCOPE, scope);
		intent.putExtra(TAuthView.TARGET, target);
		//		intent.putExtra(TAuthView.CALLBACK, CALLBACK);

		startActivity(intent);

	}

代码示例:

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.example.test"
          xmlns:android="http://schemas.android.com/apk/res/android">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <!--QQ 登录webview方式-->

        <activity
            android:name="com.tencent.tauth.TAuthView"
            android:configChanges="keyboardHidden|navigation|orientation"
            android:launchMode="singleTask">
            <intent-filter>
                <category android:name="android.intent.category.BROWSABLE" />
                <!-- <data android:scheme="auth"/> -->

            </intent-filter>
        </activity>
        <!--QQ 登录webview方式 end-->
    </application>

</manifest>
mainactiv ity代码

public class MainActivity extends AppCompatActivity {

    public String mAppid = "222222";// me申请时分配的appid
    private String scope = "all";// 授权范围
    private AuthReceiver receiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
    }

    public void login(View view) {
	registerIntentReceivers();
	auth(mAppid, "_self");
    }

    private void registerIntentReceivers() {
	receiver = new AuthReceiver();
	IntentFilter filter = new IntentFilter();
	filter.addAction(TAuthView.AUTH_BROADCAST);
	registerReceiver(receiver, filter);
    }

    private void unregisterIntentReceivers() {
	unregisterReceiver(receiver);
    }

    @Override
    protected void onDestroy() {
	super.onDestroy();
	unregisterIntentReceivers();
    }

    /**
     * 打开登录认证与授权页面
     *
     *
     *   clientId 申请时分配的appid
     *
     * target 打开登录页面的方式:“_slef”以webview方式打开; "_blank"以内置安装的浏览器方式打开
     *
     */
    private void auth(String clientId, String target) {
	Intent intent = new Intent(MainActivity.this, com.tencent.tauth.TAuthView.class);

	intent.putExtra(TAuthView.CLIENT_ID, clientId);
	intent.putExtra(TAuthView.SCOPE, scope);
	intent.putExtra(TAuthView.TARGET, target);
	//		intent.putExtra(TAuthView.CALLBACK, CALLBACK);

	startActivity(intent);

    }

    /**
     * 广播的侦听,授权完成后的回调是以广播的形式将结果返回
     *
     * @author John.Meng<arzen1013@gmail> QQ:3440895
     * @date 2011-9-5
     */
    public class AuthReceiver extends BroadcastReceiver {

	private static final String TAG = "AuthReceiver";

	@Override
	public void onReceive(Context context, Intent intent) {
	    Bundle exts = intent.getExtras();
	    String raw = exts.getString("raw");
	    String access_token = exts.getString(TAuthView.ACCESS_TOKEN);
	    String expires_in = exts.getString(TAuthView.EXPIRES_IN);
	    String error_ret = exts.getString(TAuthView.ERROR_RET);
	    String error_des = exts.getString(TAuthView.ERROR_DES);
	    Log.i(TAG,
		  String.format("raw: %s, access_token:%s, expires_in:%s",
				raw,
				access_token,
				expires_in));
	}
    }
}




注意: 不需要很多的类库 全部下来只有三个文件 。一个类库和两个前台页面,你将类库放到AppCode下面。然后将账号绑定那一块注释掉就行了,或者将账号绑定部分换成你自己系统的。就可以了。程序报错可能是因为我在绑定账号那里用到了别的类,你注释掉就行了 ------------------------------------------------------------ 经过两天的努力 已经成功将QQ登录集成到了 城记网 上。感谢腾讯提供的帮助文档,和关键时刻给的技术支持。我的网站是asp.net写的,有需要的网友可以联系我。 呵呵。(尽管是垃圾站,只要你愿意,又有什么关系呢?) QQ Oauth 只提供PHP的接入demo ,针对 ASP.net 的只有一个网友开发的SDK包,下载地址还老打不开,后来我从CSDN上下载了一个,看了以后感觉太复杂了,我个人感觉做这么个小事情不需要搞个SDK出来,不如自己按帮助文档去写,这样自己写的方法灵活性就高一些,于是就按文档学习开发。其实文档写得很清晰,耐心一看就明白了。 不讲太多的郁闷的过程了,直接说解决办法。 办这个事情主要要知道下面几个事情。 两个重点(如下): 第一个重点:请求Token的步骤, 1:请求未授权的临时token。请求成功以后会转到QQ登录页面。 2:请求已授权的临时token。登陆成功以后获得。 3:请求已授权的Access token。 第二个重点:签名的算法。 签名的值计算有一个指定的规则,请参考腾讯开放社区帮助文档,这是最 好的资料。 注意点: 没有申请APPID和APPKEY的先去申请。 传递的每一参数都要URLENcode,注意是每一个,包括动态生成的签名。    参数之间是有顺序的,是升序排列的,无论有多少个,都要排序。    各个步骤之间是有关联的,下一步的提交往往需要上一步的返回参数。 我采取的文档结构: 总共三个文件 ,非常简单。 一个放在APPcode下面的类。用来发送请求和接待参数。 两个前台页面,主要是对类的调用。 下面把类的代码完全贴出,你知要一看见类,就知道怎么写前台页面了,很简单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值