QQ 互联UnionID打通业务自助处理指引

QQ 互联UnionID打通业务自助处理指引

QQ互联UnionID打通业务已支持在互联官网(connect.qq.com)自助申请。

        通过QQ互联邮箱渠道申请的打通业务,将于2019年9月2日停止服务,请有相关需求的开发者请到QQ互联官网进行申请,感谢您的支持与配合!

操作流程指引:

  •  操作流程
  • 操作步骤

1. 应用所属的开发者帐号登录互联官网 connect.qq.com 进入应用管理界面;

2. 对需要进行UnionID打通的应用进行【查看】操作(该应用审核状态必须为“通过”);

3. 选择【应用接口】,在Unionid一栏选择【申请】,等待审核获取;

4. 接口获取成功。

  •  相关资料

UnionID介绍:https://wiki.connect.qq.com/unionid%e4%bb%8b%e7%bb%8d

QQ三方授权登录access_token过期后怎么处理?

QQ三方授权登录access_token过期后怎么处理?

access_token过期调用接口时,平台会返回错误码为100014的错误,此时需要引导用户重新进行授权。建议在每次获得用户授权时保存过期时间,在每次调用接口前判断用户access_token是否过期。
token过期时间为30天。如果存储的access token过期,请重新走登录流程,通过Authentication_Code 获取新的access token值
后续access_token后续会支持自动续期,请开发者继续关注。
如果有任何疑问请联系企业QQ:800030681。

在实现OAuth2.0协议时应该注意什么?

在实现OAuth2.0协议时应该注意什么?

答:建议使用QQ互联提供的SDK。如果没有合适的语言版本,请注意server-side模式的Step1中的state参数的处理:
1.在发起授权流程生成state参数时,要保证随机生成,并且尽量避免重复。例如:state= MD5(时间戳+当前帐号)。
2.生成后要和当前登录的用户进行绑定。这里建议两种实现方式:
1)把state放在用户的cookie中;
2)把state放在该用户在服务端的session里。
3.在Step1请求Authorization Code时必须传递state参数。
4.腾讯服务器在响应Step1的请求后,将重定向到开发者的服务器。此时开发者的服务器应检测state参数是否一致(即cookie或session里的state)。如果不一致,开发者的服务器应该拒绝此请求,并且不再发起换取access_token的请求。如果一致,则流程正常运行。
强烈建议开发者实现以上过程,以防止CSRF攻击。

实现QQ三方授权登录教程 开发攻略_Client-side

实现QQ三方授权登录教程 开发攻略_Client-side

本开发攻略适用于使用Implicit Grant方式获取Access Token的授权验证流程,适用于需要通过客户端访问的方式,例如需要通过浏览器的javascript代码,或者电脑/移动终端上的客户端访问时。
阅读本开发攻略前,请阅读使用Implicit Grant方式获取Access Token以了解认证流程。

1. 体验一把

1. 浏览器访问:http://qzs.qq.com/qzone/openapi/client.html 。
2. 点击页面中的“登录”按钮:

3. 在弹出的登录框中输入QQ帐号和密码:


4. 登录成功后,跳转到指定的回调地址,URL中带有Access Token:

2. 快速上手

准备工作

1. 请确保您的网站已经提交接入QQ登录的申请,并成功获取到appid和appkey。申请接入
2. 请在你的服务器上ping graph.qq.com ,保证网站和互联的连接畅通。

Step1:放置QQ登录按钮

网站需要下载“QQ登录”按钮图片,并按照UI规范将按钮放置在页面合适的位置。
按钮图标下载
按钮放置规范

Step2:获取Access Token

1. 打开浏览器,访问如下地址(请将client_id,redirect_uri,scope等参数值替换为你自己的):

https://graph.qq.com/oauth2.0/authorize?response_type=token&client_id=[YOUR_APPID]&redirect_uri=[YOUR_REDIRECT_URI]&scope=[THE_SCOPE]

2. 跳转登录授权页,如下图所示:


3. 如果用户点击“授权并登录”,则成功跳转到指定的redirect_uri,并在URL后加“#”号,带上Access Token以及expires_in等参数。如果redirect_uri地址后已经有“#”号,则加“&”号,带上相应的返回参数。
例如回调地址是:www.qq.com,则会跳转到:

http://www.qq.com/?#access_token=YOUR_ACCESS_TOKEN&expires_in=3600

特别提示
1. 请求时传入的recirect_uri必须与注册时填写的回调地址一致,用来进行第三方应用的身份验证。
2. 可通过js方法:window.location.hash来获取URL中#后的参数值,详见下面的示例代码。
3. 建议用js设置cookie存储token。

4. 获取到的access token具有30天有效期,用户再次登录时自动刷新。

Step3:使用Access Token来获取用户的OpenID

1. 发送请求到如下地址(请将access_token等参数值替换为你自己的):

https://graph.qq.com/oauth2.0/me?access_token=YOUR_ACCESS_TOKEN

2. 获取到用户OpenID,返回包如下:

callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} );

Step4:使用Access Token以及OpenID来访问和修改用户数据

1. 建议网站在用户登录后,即调用get_user_info接口,获得该用户的头像、昵称并显示在网站上,使用户体验统一。
2. 调用其他OpenAPI,以访问和修改用户数据。所有OpenAPI详见API列表
以调用get_user_info接口为例:
(1)发送请求到get_user_info的URL(请将access_token,appid等参数值替换为你自己的):

https://graph.qq.com/user/get_user_info?access_token=YOUR_ACCESS_TOKEN&oauth_consumer_key=YOUR_APP_ID&openid=YOUR_OPENID

(2)成功返回后,即可获取到用户数据:

{
  "ret":0,
   "msg":"",
   "nickname":"YOUR_NICK_NAME",
   ...
}

3. 示例代码

下面给出了一个JavaScript的样例(只需要按照注释修改部分代码即可运行)

  <html>
     <head>
        <title>Client Flow Example</title>
     </head>
     <body>
        <script>
           function callback(user)
           {
              var userName = document.getElementById('userName');
              var greetingText = document.createTextNode('Greetings, '+ user.openid + '.');
              userName.appendChild(greetingText);
           }
           //应用的APPID,请改为你自己的
            var appID = "YOUR_APP_ID";
           //成功授权后的回调地址,请改为你自己的
            var redirectURI = "http://qzs.qq.com/qzone/openapi/success.html";
           //构造请求
           if (window.location.hash.length == 0)
           {
              var path = 'https://graph.qq.com/oauth2.0/authorize?';
              var queryParams = ['client_id=' + appID,'redirect_uri=' + redirectURI,'
              scope=' + 'get_user_info,list_album,upload_pic,add_feeds,do_like','response_type=token'];
              var query = queryParams.join('&');
              var url = path + query;
              window.open(url);
           }
           else
           {
              //获取access token
              var accessToken = window.location.hash.substring(1);
              //使用Access Token来获取用户的OpenID
              var path = "https://graph.qq.com/oauth2.0/me?";
              var queryParams = [accessToken, 'callback=callback'];
              var query = queryParams.join('&');
              var url = path + query;
              var script = document.createElement('script');
              script.src = url;
              document.body.appendChild(script);
           }
        </script>
     </body>
 </html>

4. 使用JS SDK

为了让应用更快接入,腾讯提供了JS SDK,应用只需引入js脚本,再进行少量的代码修改,即可接入QQ登录,过程非常简单快速。
详见:
JS SDK使用说明

网站实现QQ三方授权登录 开发攻略_Server-side

网站实现QQ三方授权登录 开发攻略_Server-side

阅读前提

本开发攻略基于使用Authorization Code获取Access Token的授权验证流程,适用于需要从web server访问的应用,例如Web/wap网站。
阅读本开发攻略前,请阅读使用Authorization Code获取Access Token以了解认证流程。

1. 体验一把

注:
本体验基于无Server端模式,但体验效果与有Server端模式一致。

1. 浏览器访问:http://qzs.qq.com/qzone/openapi/client.html 。
2. 点击页面中的“登录”按钮:

3. 在弹出的登录框中输入QQ帐号和密码:


4. 登录成功后,跳转到指定的回调地址,URL中带有Access Token:

2. 快速上手

准备工作

1. 请确保您的网站已经提交接入QQ登录的申请,并成功获取到appid和appkey。申请接入
2. 请在你的服务器上ping graph.qq.com,保证网站和互联的连接畅通。

Step1:放置QQ登录按钮

网站需要下载“QQ登录”按钮图片,并按照UI规范将按钮放置在页面合适的位置。
按钮图标下载
按钮放置规范

Step2:获取Authorization Code

1. 打开浏览器,访问如下地址(请将client_id,redirect_uri,scope等参数值替换为你自己的):

https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=[YOUR_APPID]&redirect_uri=[YOUR_REDIRECT_URI]&scope=[THE_SCOPE]

2. 跳转登录授权页,如下图所示:


3. 如果用户点击“授权并登录”,则成功跳转到指定的redirect_uri,并跟上Authorization Code(注意此code会在10分钟内过期)。
例如回调地址是:www.qq.com/my.php,则会跳转到:

http://www.qq.com/my.php?code=520DD95263C1CFEA0870FBB66E******

注意:
回调地址建议设置为网站首页或网站的用户中心。

Step3:通过Authorization Code获取Access Token

1.发送请求到如下地址(请将参数值替换为你自己的,参数解释详见这里):

https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=[YOUR_APP_ID]&client_secret=[YOUR_APP_Key]&code=[The_AUTHORIZATION_CODE]&redirect_uri=[YOUR_REDIRECT_URI]

2. 即可获取到Access Token:

access_token=YOUR_ACCESS_TOKEN&expires_in=3600

可在回调URL对应的程序(见下文的示例代码)中接受请求,并完成获取Access Token的工作。

特别提示:

获取到的access token具有30天有效期,用户再次登录时自动刷新。

第三方网站可存储access token信息,以便后续调用OpenAPI访问和修改用户信息时使用。

Step4:使用Access Token来获取用户的OpenID

1. 发送请求到如下地址(请将access_token等参数值替换为你自己的):

https://graph.qq.com/oauth2.0/me?access_token=YOUR_ACCESS_TOKEN

2. 获取到用户OpenID,返回包如下:

callback( {“client_id”:”YOUR_APPID”,”openid”:”YOUR_OPENID”} );

Step5:使用Access Token以及OpenID来访问和修改用户数据

1. 建议网站在用户登录后,即调用get_user_info接口,获得该用户的头像、昵称并显示在网站上,使用户体验统一。
2. 调用其他OpenAPI,以访问和修改用户数据。所有OpenAPI详见API列表
以调用get_user_info接口为例:
(1)发送请求到get_user_info的URL(请将access_token,appid等参数值替换为你自己的):

https://graph.qq.com/user/get_user_info?access_token=YOUR_ACCESS_TOKEN&oauth_consumer_key=YOUR_APP_ID&openid=YOUR_OPENID

(2)成功返回后,即可获取到用户数据:

{
   "ret":0,
   "msg":"",
   "nickname":"YOUR_NICK_NAME",
   ...
}

3. 示例代码

<?php
  //应用的APPID
  $app_id = "YOUR_APP_ID";
  //应用的APPKEY
  $app_secret = "YOUR_APP_KEY";
  //成功授权后的回调地址
  $my_url = "YOUR_REDIRECT_URL";
  //Step1:获取Authorization Code
  session_start();
  $code = $_REQUEST["code"];
  if(empty($code))
  {
     //state参数用于防止CSRF攻击,成功授权后回调时会原样带回
     $_SESSION['state'] = md5(uniqid(rand(), TRUE));
     //拼接URL
     $dialog_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id="
        . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
        . $_SESSION['state'];
     echo("<script> top.location.href='" . $dialog_url . "'</script>");
  }
  //Step2:通过Authorization Code获取Access Token
  if($_REQUEST['state'] == $_SESSION['state'])
  {
     //拼接URL
     $token_url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&"
     . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
     . "&client_secret=" . $app_secret . "&code=" . $code;
     $response = file_get_contents($token_url);
     if (strpos($response, "callback") !== false)
     {
        $lpos = strpos($response, "(");
        $rpos = strrpos($response, ")");
        $response  = substr($response, $lpos + 1, $rpos - $lpos -1);
        $msg = json_decode($response);
        if (isset($msg->error))
        {
           echo "<h3>error:</h3>" . $msg->error;
           echo "<h3>msg  :</h3>" . $msg->error_description;
           exit;
        }
     }
     //Step3:使用Access Token来获取用户的OpenID
     $params = array();
     parse_str($response, $params);
     $graph_url = "https://graph.qq.com/oauth2.0/me?access_token="
     $params['access_token'];
     $str  = file_get_contents($graph_url);
     if (strpos($str, "callback") !== false)
     {
        $lpos = strpos($str, "(");
        $rpos = strrpos($str, ")");
        $str  = substr($str, $lpos + 1, $rpos - $lpos -1);
     }
     $user = json_decode($str);
     if (isset($user->error))
     {
        echo "<h3>error:</h3>" . $user->error;
        echo "<h3>msg  :</h3>" . $user->error_description;
        exit;
     }
     echo("Hello " . $user->openid);
  }
  else
  {
     echo("The state does not match. You may be a victim of CSRF.");
  }
?>

QQ登录OAuth2.0总体处理流程?

QQ登录OAuth2.0总体处理流程?

QQ登录OAuth2.0总体处理流程如下:
Step1:申请接入,获取appid和apikey;
Step2:开发应用,并设置协作者帐号进行测试联调;
Step3放置QQ登录按钮
Step4:通过用户登录验证和授权,获取Access Token;
Step5:通过Access Token获取用户的OpenID
Step6调用OpenAPI,来请求访问或修改用户授权的资源。

QQ登录OAuth2.0接入方式?

QQ登录OAuth2.0接入方式?

QQ登录OAuth2.0支持网站接入移动应用接入
网站可通过以下两种方式接入:
(1)使用QQ互联提供的SDK包,用户体验统一,只需要修改少量代码,不需要理解验证授权流程,需要快速接入QQ登录的网站和移动应用可选用此方法。
QQ互联提供JavaScript,PHP,Java等多个版本的SDK,详见:SDK下载
QQ登录JS SDK详见:JS SDK使用说明
(2)根据QQ登录OAuth2.0协议,自主开发,此方法自定义程度较高,需要与现有系统进行整合的网站和移动应用可选用此方法。
详见:OAuth2.0开发文档
移动应用开发可通过以下两种方式接入:
(1)使用QQ互联提供的iOS,Android等平台的SDK包,用户体验统一,只需要修改少量代码,不需要理解验证授权流程,需要快速接入QQ登录的应用可选用此方法。
iOS与Android版本的SDK均支持web view与浏览器两种方式,即支持跳转到手机浏览器上进行QQ登录与验证流程,开发者可在SDK包中选择浏览器模式即可,但浏览器方式用户跳跃较大,不建议使用。
详见:SDK下载
(2)根据QQ登录OAuth2.0协议,自主开发,此方法自定义程度较高,需要与现有系统进行整合的移动应用可选用此方法。
建议移动应用使用webview的方式打开登录页面,登录成功后,获取accesstoken与openid,webview控件关闭,用户体验较好。
详见:OAuth2.0开发文档
对于Android2.1以下版本,访问https时会遇到签名证书验证的问题,解决方案可参考这里

APP唤起QQ实现三方授权登录 iOS_SDK环境搭建

APP唤起QQ实现三方授权登录 iOS_SDK环境搭建

QQ登录iOS SDK 封装了QQ登录的登录授权以及大部分OpenAPI,应用只需要修改相应参数,不需要理解验证授权流程,即可快速实现QQ登录功能。
iOS平台上(iPad,iPhone,iPod)的应用,请在申请appid,appkey后,使用QQ互联提供的iOS SDK。
1.5版本增加 QQAPI 对象,以支持手机QQ的调用。以前申请过 APPID 类似“QQXXXXXXXX”的开发商,建议重新申请。为了兼容旧版本的手机QQ,需要增加 URL Scheme,QQ + 十六进制新AppId,不足八位在首部补0。(如 appid=222222 则 scheme=QQ0003640E)
详情请参考iOS_SDK_API_使用说明
本SDK仅适用于移动应用,即基于使用Implicit_Grant方式获取Access_Token接入的应用。

变更历史

可参考文档 iOS_SDK历史变更

1. iOS SDK 下载

请到SDK下载页面下载最新版本QQ登录iOS SDK。

2. iOS SDK目录结构

iOS SDK包中带有两个文件:
1. TencentOpenAPI.framework打包了iOS SDK的头文件定义和具体实现。
2. TencentOpenApi_iOS_Bundle.bundle 打包了iOS SDK需要的资源文件。(从sdk3.3.5版本开始,此文件可以不要了)

3. 将iOS SDK文件添加到工程中

1. 将iOS SDK中的TencentOpenAPI.framework和TencentOpenApi_IOS_Bundle.bundle文件拷贝到应用开发的目录下。
然后将TencentOpenAPI.framework从SDK的保存目录拖拽到工程导航视图(project navigator)中的Frameworks虚拟目录下。

注意TencentOpenAPI.framework和TencentOpenApi_IOS_Bundle.bundle必须放到应用的资源的根目录下,否则会出现资源无法加载的问题。

2. 在弹出的对话框中勾选“Create groups for any added folders”,去掉“copy items into destination group’s folder(if needed)”,在Add to targets中选择要加入SDK的target之后点击finish。完成之后就将iOS SDK的framework文件加入了开发工程中。


3. 添加SDK依赖的系统库文件。分别是“Security.framework”,“libiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。
在Xcode中打开工程配置文件,选择“summary”一栏。


4. 在“summary”中选择“Linked Frameworks and Libraries”一栏,点击“+”图标。


5. 直接在默认库文件中选择后点击“Add”,下图以添加“SystemConfiguration.framework”为例:



6. 返回后看到“SystemConfiguration.framework”已经在“Linked Frameworks and Libraries”中出现。

7. 在Xcode中打开工程配置文件,选择“Build Phases”一栏。


8.在“Build Phases”中选择展开“Copy Bundle Resources”一栏,并点击“+”图标


9. 选择“Add Other…”,进入iOS SDK文件所在目录,选择TencentOpenApi_IOS_Bundle.bundle,点击回车或者点击“Open”。



10. 返回后看到TencentOpenApi_IOS_Bundle.bundle已经在“Copy Bundle Resources”中出现。


11. 修改必要的工程配置属性。
在工程配置中的“Build Settings”一栏中找到“Linking”配置区,给“Other Linker Flags”配置项添加属性值“-fobjc-arc”。

4. 修改必要的代码

4.1 修改工程配置文件

(1)配置URL Scheme

在XCode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type”添加一条新的“URL scheme”,新的scheme = tencent + appid。如果您使用的是XCode3或者更低的版本,则需要在plist文件中添加。Demo中我们注册的appid是222222。如下图

(2)配置LSApplicationQueriesSchemes

如下图对照sdkDemo的配置,进行填写,根据备注中的说明可以酌情删减。

互联SDK中使用的scheme备注
mqq://比较常用
mqqapi://比较常用
tim://比较常用
mqqopensdknopasteboard://比较常用
mqqopensdkapiV2://比较常用
mqqgamebindinggroup://判断设备上QQ是否支持绑定群
mqqopensdkavatar://判断设备上QQ是否支持设置头像
mqqopensdkfriend://判断设备上QQ是否支持添加好友
mqqopensdklaunchminiapp://判断设备上QQ是否支持启动小程序
mqzone://判断设备上是否安装了QQ空间
tencentapi.qq.reqContent://只在 [TencentApiInterface isTencentAppSupportTencentApi]方法中用到
tencentapi.qzone.reqContent://只在 [TencentApiInterface isTencentAppSupportTencentApi]方法中用到
mqqthirdappgroup://判断设备上QQ是否支持第三方应用加群
mqqopensdkminiapp://判断设备上QQ是否支持小程序的相关API

如果这个URL Scheme没有正确配置的话,跳到手Q会报这个错误:

4.2 重写AppDelegate 的handleOpenURL和openURL方法

openURL:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
   return [TencentOAuth HandleOpenURL:url];
}

handleOpenURL:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
   return [TencentOAuth HandleOpenURL:url];
}

注意:Xcode11之后引入的SceneDelegate,如果业务的应用不支持多窗口可以直接删除项目info.plist文件中的Application Scene Manifest的配置数据,如果要支持多窗口,需要对系统AppDelegate和SceneDelegate做一些异化处理,总之QQ回来的URL交给TencentOauth来handle。

4.3 在代码中实现TencentSessionDelegate协议中的方法

具体协议可以参照TencentOpenAPI.framework /Headers中的TencentOAuth.h文件。

4.4 初始化iOS SDK API数据对象TencentOAuth。

(1) 创建TencentOAuth并初始化其appid,demo为222222。delegate为实现TencentSessionDelegate的对象:

[TencentOAuth setIsUserAgreedAuthorization:YES];

_tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"222222", andDelegate:self];

这里delegate不能为空

(2) 初始化redirectURI(这里需要填写注册APP时填写的域名。默认可以不用填写。建议不用填写。demo中注册时的地址是“www.qq.com”):

_tencentOAuth.redirectURI = @"www.qq.com";

(3)设置应用需要用户授权的API列表。 (建议如果授权过多的话,可能会造成用户不愿意授权。这里最好只授权应用需要用户赋予的授权。):

_permissions = [[NSArray arrayWithObjects:@"get_user_info",@"get_simple_userinfo", @"add_t", nil] retain];

4.5设置用户是否同意隐私协议。

3.5.7版本更新后,在初始化SDK之前必须设置用户同意授权隐私协议,如果没有设置或者设置为NO(不同意)则无法使用SDK的接口,设置方式如下:

[TencentOAuth setIsUserAgreedAuthorization:YES];

5. 调用SDK登录

1.登录时,调用TencetnOAuth对象的authorize方法:

[_tencentOAuth authorize:_permissions inSafari:NO];

2. 登录完成后,会调用TencentSessionDelegate中关于登录的协议方法。
登录成功:

@protocol TencentSessionDelegate <NSObject>
- (void)tencentDidLogin
{
   _labelTitle.text = @"登录完成";
   if (_tencentOAuth.accessToken && 0 != [_tencentOAuth.accessToken length])
   {
   // 记录登录用户的OpenID、Token以及过期时间
      _labelAccessToken.text = _tencentOAuth.accessToken;
   }
   else
   {
      _labelAccessToken.text = @"登录不成功 没有获取accesstoken";
   }
}

非网络错误导致登录失败:

@protocol TencentSessionDelegate <NSObject>
-(void)tencentDidNotLogin:(BOOL)cancelled
{
   if (cancelled)
   {
      _labelTitle.text = @"用户取消登录";
   }
   else
   {
      _labelTitle.text = @"登录失败";
   }
}

网络错误导致登录失败:

@protocol TencentSessionDelegate <NSObject>
-(void)tencentDidNotNetWork
{
   _labelTitle.text=@"无网络连接,请设置网络";
}

3. 登录成功后,即可获取到access token和openid。accessToken和 openid保存在TencentOAuth对象中。可以通过相应的属性方法直接获得。

[_tencentOAuth accessToken] ;
[_tencentOAuth openId] ;

特别提示:
1.由于登录是异步过程,这里可能会由于用户的行为导致整个登录的的流程无法正常走完,即有可能由于用户行为导致登录完成后不会有任何登录回调被调用。开发者在使用SDK进行开发的时候需要考虑到这点,防止由于一直在同步等待登录的回调而造成应用的卡死,建议在登录的时候将这个实现做成一个异步过程。
2.获取到的access token具有30天有效期,过期后提示用户重新登录授权。
3. 第三方网站可存储access token信息,以便后续调用OpenAPI访问和修改用户信息时使用。如果需要保存授权信息,需要保存登录完成后返回的accessToken,openid 和 expirationDate三个数据,下次登录的时候直接将这三个数据是设置到TencentOAuth对象中即可。
获得:

[_tencentOAuth accessToken] ;
[_tencentOAuth openId] ;
[_tencentOAuth expirationDate] ;

设置:

[_tencentOAuth setAccessToken:accessToken] ;
[_tencentOAuth setOpenId:openId] ;
[_tencentOAuth setExpirationDate:expirationDate] ;

4. 建议应用在用户登录后,即调用getUserInfo接口获得该用户的头像、昵称并显示在界面上,使用户体验统一。

网站接入QQ互联教程四 获取用户OpenID_OAuth2.0

网站接入QQ互联教程四 获取用户OpenID_OAuth2.0

本步骤的作用
通过输入在上一步获取的Access Token,得到对应用户身份的OpenID。
OpenID是此网站上或应用中唯一对应用户身份的标识,网站或应用可将此ID进行存储,便于用户下次登录时辨识其身份,或将其与用户在网站上或应用中的原有账号进行绑定。
本步骤在整个流程中的位置

上一步

server-side模式:请参见使用Authorization_Code获取Access_Token
client-side模式:请参见使用Implicit_Grant方式获取Access_Token

1 请求地址

PC网站:https://graph.qq.com/oauth2.0/me

2 请求方法

GET

3 请求参数

请求参数请包含如下内容:

参数是否必须含义
access_token必须在Step1中获取到的access token。
fmt可选因历史原因,默认是jsonpb格式,如果填写json,则返回json格式

4 返回说明

PC网站接入时,获取到用户OpenID,返回包如下(如果fmt参数未指定):

callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} );

openid是此网站上唯一对应用户身份的标识,网站可将此ID进行存储便于用户下次登录时辨识其身份,或将其与用户在网站上的原有账号进行绑定。

5 错误码说明

接口调用有错误时,会返回code和msg字段,以url参数对的形式返回,value部分会进行url编码(UTF-8)。
PC网站接入时,错误码详细信息请参见:100000-100031:PC网站接入时的公共返回码

QQ互联网站应用接入介绍

QQ互联网站应用接入介绍

QQ互联开放平台为第三方网站提供了丰富的API。第三方网站接入QQ互联开放平台后,即可通过调用平台提供的API实现用户使用QQ帐号登录网站功能,且可以获取到腾讯QQ用户的相关信息。
第三方网站也可以调用腾讯方提供的API实现网站的分享、评论、邀请等功能,即网站的社交化功能。且可以将相关信息同步到QQ空间、腾讯朋友、腾讯微博等平台,建立网站与腾讯各平台的互动关系,利用庞大的QQ用户群来实现网站的快速传播。
网站接入QQ互联开放平台后,您将获得:
海量新用户:用户使用已有的QQ号码即可登录网站,QQ一键登录更可减少登录交互操作,大大降低网站注册门槛,给网站带来海量新用户。
活跃的访问量:已登录用户可以将在网站上发布、分享的信息即时同步到QQ空间,使网站内容通过QQ好友关系链得到进一步的传播,从而提升网站的访问量。
丰富的开放API:网站可以通过用户资料接口获取用户的空间昵称和头像,来丰富用户注册资料。此外,还可以通过说说,相册,日志等开放接口使用户直接在网站上访问或修改他们在QQ空间、腾讯朋友、腾讯微博上的数据,与腾讯各平台实现更进一步的互联互通。

QQ互联网站应用及移动应用接入申请教程

QQ互联网站应用及移动应用接入申请教程

应用接入前,首先需进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权。

1.1 创建应用

开发者注册完成后,点击“应用管理”按钮。

跳转到qq互联管理中心页面,点击创建应用。

选择需要创建的应用类型,我们以网站应用为例:

点击创建网站应用后,按要求完善信息:

  1. 网站回调地址填写规范:https://wiki.connect.qq.com/%E5%9B%9E%E8%B0%83%E5%9C%B0%E5%9D%80%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E5%8F%8A%E4%BF%AE%E6%94%B9%E6%96%B9%E6%B3%95
  2. 备案信息填写规范:http://www.miitbeian.gov.cn/publish/query/indexFirst.action


网站信息填写完成,点击“创建应用”后,网站应用创建完成,点击“应用管理”,进入管理中心,在管理中心可以查看到网站获取的appid和appkey,如下图所示:

备注:创建移动应用与网站应用步骤方法一致,在此不赘述。
 

1.2 网站信息完善

点击“应用中心”,应用右侧的“查看”,进入应用详情页面。

应用详情页面可点击“修改”来编辑应用“基本信息”和“平台信息”。


点击“应用接口”可查看已获取的接口,使用QQ登录功能。

QQ互联开放平台注册开发者账号教程

开发者通过以下几个步骤,即可接入互联开放平台: 注册开发者→创建应用→通过审核并获取接口权限

1.注册开发者

1. 在QQ互联开放平台首页 https://connect.qq.com/ ,点击右上角的“登录”按钮,使用QQ帐号登录,如下图所示:

重要提示:
开发者QQ号码一旦注册不能变更,建议使用公司公共QQ号码而不是员工私人号码注册,以免遇到员工离职等情况造成不必要的麻烦。


2. 登录成功后会跳转到开发者注册页面,在注册页面按要求提交公司或个人的基本资料。下图所示的是公司注册页面:

3.按要求提交资料后,审核人员会进行审核,通过审核即可成为开发者。

APP开发实现QQ登录 APP唤起QQ实现三方授权登录 qqLogin QQ登录 通过网页回调

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

qqLogin QQ登录 通过网页回调

登录结果及授权参数将通过 URL Query 传到给你指定的链接

核心代码示例,详情参阅demo

jsBridge.qqLogin("./u.cshtml");
/*
如果登录成功会跳转到链接
u.cshtml?openid=xxxx&access_token=xxxx&userinfo=xxxx
userinfo 参数是 JSON.stringify(userinfo) 的 URLEncode 编码
*/

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.qqLogin("./u.cshtml");
/*
如果登录成功会跳转到链接
u.cshtml?openid=xxxx&access_token=xxxx&userinfo=xxxx
userinfo 参数是 JSON.stringify(userinfo) 的 URLEncode 编码
*/

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.qqLogin("./u.cshtml");
/*
如果登录成功会跳转到链接
u.cshtml?openid=xxxx&access_token=xxxx&userinfo=xxxx
userinfo 参数是 JSON.stringify(userinfo) 的 URLEncode 编码
*/

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

为APP开发QQ登录能力 qqLogin QQ登录 通过函数回调

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

qqLogin QQ登录 通过函数回调

通过js函数回调获取登录结果及授权参数

jsBridge.qqLogin(function(succ, ret) {
  if (succ) {
    alert(JSON.stringify(ret));
  } else {
    alert("登录失败或取消了登录");
  }
});
/*
登录成功的结果在 ret 中返回,是个 json 对象:
{
  openid:       "wwwwwwwwwwwwwww",
  access_token: "aaaaaaaaaaaaaaa",
  userinfo: {       //用户资料
    nickname: "sssssss"
    //...
  }
}
*/

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.qqLogin(function(succ, ret) {
  if (succ) {
    alert(JSON.stringify(ret));
  } else {
    alert("登录失败或取消了登录");
  }
});
/*
登录成功的结果在 ret 中返回,是个 json 对象:
{
  openid:       "wwwwwwwwwwwwwww",
  access_token: "aaaaaaaaaaaaaaa",
  userinfo: {       //用户资料
    nickname: "sssssss"
    //...
  }
}
*/

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.qqLogin(function(succ, ret) {
  if (succ) {
    alert(JSON.stringify(ret));
  } else {
    alert("登录失败或取消了登录");
  }
});
/*
登录成功的结果在 ret 中返回,是个 json 对象:
{
  openid:       "wwwwwwwwwwwwwww",
  access_token: "aaaaaaaaaaaaaaa",
  userinfo: {       //用户资料
    nickname: "sssssss"
    //...
  }
}
*/

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

想要制作一款图片视频类APP需要注意哪些地方呢?

想要制作一款图片视频类APP需要注意哪些地方呢?
目前的网络社交中,图片视频类App层出不穷,从经久不衰的美图秀秀到昙花一现的足迹,从微信里的八秒小视频到微博说最长达五分钟的秒拍,花时间组织语言不如1秒的照片和几秒的视频更能表达心情。

这么,怎么用一门APP制作一款短视频移动应用?
我们以秒拍为例:

分解秒拍移动应用的功能

【视频拍摄及导入】:支持直接拍摄及导入手机本地的视频

【照片电影】:照片专属特效,简单创作照片电影

【MV特效】:十余款全新安卓打包HTMLMV特效,让普通视频一键变大片

【情境滤镜】:专业的视频滤镜,让人像、风景视频更为惊艳

【精美配乐】:精选各类风格的背景音乐,让视频重现电影大片的气氛

【丰富内容】:在秒拍,您能够发现有趣的内容或参加各类

活动话题

 

除去这些亮点功能,它还将包括:

评论功能:可在自己喜欢或想吐槽的短视频下进行评论

视频存储功能:每一种用户拍摄短视频后都将上传到秒拍中,这样关注自己的粉丝都将看到

分享功能:将视频分享到微博、微信、QQ等其他社交媒体中

用一门APP实现短视频的主要功能

注意:秒拍App中的主要功能能够在一门APP 聚合API中找到匹配的SDK功能模块嵌入实现,然而由于模块是作为根本功能存在的,最终呈现的效果具有一定的差异。

还需各位自行进行更高级的设置和修改。

秒拍App具有一些炫酷的UIUX界面和滤镜效果想要您们自己来更深层的考虑啦!

【视频拍摄及导入】:videoRecorder,svideo,recordVideo,miniVideoRecorder,qupai,mimiQuPai等模块。

例如videoRecorder模块,它打包了原生录像机的相关功能,通过本模块的 open 接口可打开摄像头的 frame ,可通过相应参数配置其位置、大小、视频质量、保存路径等信息。

制作者可通过 open 一种自定义界面的 frame 覆盖在本模块上来自定义录像界面。

又如,趣拍SDK是杭州短趣和阿里巴巴联合提影视APP开发供的短视频拍摄SDK,为广大APP制作者提供免费、轻松、快捷、稳定的接口,帮忙助力制作者迅速实现自有移动应用上的短视频应用制作。

其中包含短视频拍摄、水印、拍摄码率等的自定义设置,并自带美颜功能。

【照片电影、MV特效、情境滤镜】:imageFilter模块

imageFilter模块打包了对图片按照指定效果过滤的功能,过滤后的图片可保存到指定目录。

【及时通讯(评论功能)】:融云,环信等模块,也能够自己通过socketManager自己打包协议实现

【视频存储】:视频回放功能的实现其实是录像+存储到服务器中,所以使用一门APP的数据云功能,或是7牛云存储,又拍云等模块都能够实现APP 打包工具

【视频分享】:微信、新浪微博、QQ等官方分享模块

最后,顺便说下图片处理类App,相信最近大家被俄罗斯国民应用prisma刷了屏。

这款应用功能轻松但逼格超高,任意一张图片能够加入艺术大师的滤镜,分分钟成为艺术作品!
类似于这样的App,直接使用imageFilter模块进行制作即可,假设模块中的滤镜不够使用,还能够自行再修改。

音频读物移动应用制作当前市场需求及盈利方案分析

说到音频,想必很多人都不陌生,毕竟音频的作品在当前越来越多,并且能够满足不同人对于不同音频的获取需求,以音频读物移动应用制作的形式,可建立一种融合多种音频作品的线上终端官方,为想要进行音频作品观看的用户提供一站式服务官方。

一、音频读物移动应用制作当前市场需求
过往我们不论是在看小说

、看资讯还是看新闻,核心方案还是通过眼睛去看,不过随着音频作品在现阶段的流行,我们能够实现更多的作品管看模式。以音频播放的形式,可以让用户用耳朵去倾听作品,体会不同样的作品赏析。并且音频读物移动应用制作能够实现的功能板块也具有多样化,依据市场用户的体验来进行官方完善一样具有发展前景。
2、音频读物移动应用制作的盈利方案分析
1、结合官方的传播力度获取更多用户流量
在实现盈利的过程中当中,我们能够通过音频读物移动应用制作的传播力度来获取更多的用户流量,其中,当官方有了充足的用户流量的话,则是能够获取更多的市场商机。音频读物移动应用制作能够制定多种活动或者是套餐,以吸引更多市场用户的关注。
二、达成更多的商业合作,获取更多利润
现在的商业合作开始趋于流行,这么作为音频服务官方,也能够通过和第3方进行合作,达成更多的商业形式,从而获取更多来自用户流量、广告收益以及其他方方面面的利润,推动官方的长远发展。
三、以高质量的音频读物实现知识付费板块
当下的付费内容板块日益出目前人们的视野当中,以音频读物移动应用制作的内容创新、质量保障以及其他方面优势的宣传等等,也打造专属于官方的特色板块,达成付费知识的形式。
移动互联网时代下的音频读物移动应用制作能够实现关于音频作品分类展示、个性化观看模式设置、音频作品在线互动交流等等多方面的功能,符合当前用户对于此类音频服务的观看体验需求。

跨境电商官方制作的市场发展方向分析

跨境业务板块在当前全球化时代的发展进程当中不断完善优化,其中,为了实现行业的进一步迭代,跨境电商官方制作也应运而生。通过这样的一种官方,能够结合自身的多种功能,实现管理者端以及消费者端的操作优化,符合互联网发展方向。

一、跨境电商官方制作的市场发展方向分析
对于跨境电商行业来看,跨境电商官方制作能够推动整个官方朝着更为便捷化。信息化的方向发展,符合时代的发展轨

迹。相较于传统的经营模式,跨境电商官方制作能够实现人力资源成本方面的节约,有效发挥系统官方在处理各项业务过程中的便捷性,实现各条产业链完善以及是官方各个业务部门的迭代优化等等。同时借助跨境电商官方制作的形式,可以在市场当中建立一种宣传官方,让更多的用户能够通过官方进行操作,一来能够获取更多的用户关注度,2来也可以提高官方在用户心中的影响力,吸引更多的用户在官方进行消费。
2、跨境电商官方制作想要具备哪些功能板块?
1、商品信息内容管理
针对商品的信息管理需求,跨境电商官方制作能够将这些商品实现信息化处理,这样一来,不论是在做商品的内容管理还是对于商品的存货信息进行更新等等都会具有效果,以达到官方对商品板块的管理优化需求。同时,利用官方的操作端,也能够对商品进行内容编辑,并推送给目标用户进行查看。
二、商品订单管理功能
针对官方每日产生的订单管理操作需求,跨境电商官方制作能够提供订单管理的优化迭代,提升订单处理的效率。
三、在线浏览以及购买
用户能够通过跨境电商官方来对有想要的商品进行查看,同时结合自身对于商品价值的判断开放选用是否进行线上购买。
为了更好地发掘线上用户,电商行业开始趋向于细分化,这么以满足用户海购需求的跨境电商官方制作也在当前时代流行。

外卖移动应用软件制作受众群体浅析

社会发展使得人们生活节奏也在不断加快,因此当代年轻人鲜少会开销大量的时间烹饪菜肴,为了帮忙助力人们解决餐饮问题,外卖移动应用软件制作出目前人们生活中,线上点餐方案很好的满足了当代人的需求。还有外卖移动应用的出现还促进了线下餐饮行业发展,有助于商家获取更多的客源。

一.这么今日我们就来浅析一下外卖移动应用软件制作的核心受众群体。

1、职场人工:工作忙碌使得很多职场人工无暇顾及餐饮问题,所以对于他们而言,点外卖就成为了生活中的常态,因此外卖移动应用能为他们提供大幅的便利。而且用户打开手机定位功能,官方还会依据用户位置信息推送附近店铺资讯,以便用户可以在线选用到合适的餐饮,而且人们在等待时间内还能处理工作事宜。

二、高校学生:有时候学生食堂往往与宿舍和教学楼相隔较远,因此点外卖就能为这部分学生提供便利,外卖移动应用会和学校饭堂进行合作,能让学生以低廉的费用就能点到心仪的菜品,让学生不必再为吃饭问题而苦恼,给人们生活带来一定的便利。

2.这么外卖移动应用软件制作具备哪些功能呢?

1、热门菜品展示:外卖移动应用首页会为用户展示各类热门菜品资讯,有需求的用户能够自行浏览相关内容,而图文结合的方案能够激发用户的购买欲望,帮忙助力线下商家获取更多的客源。

二、店铺信息查看:除此之外,移动应用还会为用户展示部分线下店铺信息,用户点击店铺信息,就能在线查看店铺菜品详情,能为用户选用菜品提供一定的参考根据,给人们生活带来一定的便利。

三、一键下单支付:若是用户选用好相关餐饮,就能在线下单而且支付价格,用户核对好个人信息和地址之后,就能在线支付价格,官方支持用户使用微信钱包、支付宝等进行在线支付,支付过程方便快捷。

四、外卖订单信息:而用户支付完价格之后,就能在线查看外卖订单详情,以便用户可以及时拿取外卖。

以上就是外卖移动应用软件制作核心受众群体和功能浅析,虽然相关市场一片红海,若是官方能创新功能,必然能在应用市场上占据一席之地。

开发APP从一门开始www.yimenapp.com

云商城全网通设置-APP登录设置

云商城全网通设置中可以对商城的基本设置、样式设置、验证短信模板、APP登录设置和APP样式设置进行设置;

图:一门APP打包平台开发者中心

我们针对全网通设置的验证码短信模板进行介绍,在验证码短信模板中可以设置是否开启QQ登录、微信登录、注册登录是否强制勾选用户协议与隐私政策、填写APP的用户协议和隐私政策;

图:APP登录设置

设置APP第三方登录,在此可以设置是否开启QQ授权登录和微信授权登录商城;

图:勾选QQ登录和微信登录

设置注册登录是否强制勾选同意商城用户协议与隐私政策,开启后登录时需要勾选同意用户协议与隐私政策后才能登录商城;

图:开启注册登录强制勾选

设置用户协议与隐私政策,在此设置了用户协议与隐私政策,用户在勾选用户协议与隐私政策时可以点击查看商城的用户协议和隐私政策内容;

图:输入用户协议和隐私政策内容

如果你在配置APP登录设置的过程中还有其他疑问 ,可以联系我们在线客服进行咨询。