第三方微信登录接口 (微信登录第三方接口)

一.iOS端需要的设置

非代码相关

1.1 首先AppID下的Associated Domains要开启的

微信登录接口,微信登录接口接入

1.2 Xcode TARGETS ->Signing&Capabilites 下添加Associated Domains

微信登录接口,微信登录接口接入

1.3 搞一个apple-app-site-association文件[创建一个空白文件(必须纯文本,命名为apple-app-site-association,去除后缀名)]交给后台或者运维人员

{
"applinks":{
"apps":[],
"details":[
{
"appID":"KEAAAAA.com.baidu.syoraoooo",
"paths":["*"]
}
]
}
}

期中appID稍微注意一下
KEAAAAA为苹果账号的团队ID在苹果开发者网站查看
com.baidu.syoraoooo为BundleID

Info.plist里添加 LSApplicationQueriesSchemes weixin weixinULAPI

代码相关

1.4 AppDelegate.m

@interfaceAppDelegate()<WXApiDelegate>
...didFinishLaunchingWithOptions...{
//向微信注册
[WXApiregisterApp:APP_ID
universalLink:UNIVERSAL_LINK];
}
...

#pragmamark---微信相关
-(BOOL)application:(UIApplication*)application
handleOpenURL:(NSURL*)url{
return[WXApihandleOpenURL:url
delegate:self];
}
-(BOOL)application:(UIApplication*)application
openURL:(NSURL*)url
sourceApplication:(NSString*)sourceApplication
annotation:(id)annotation
{
return[WXApihandleOpenURL:url
delegate:self
];
}
-(BOOL)application:(UIApplication*)application
continueUserActivity:(NSUserActivity*)userActivity
restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>>*__nullablerestorableObjects))
restorationHandler
{

return[WXApihandleOpenUniversalLink:userActivity
delegate:self];
}
-(BOOL)application:(UIApplication*)appopenURL:(NSURL*)urloptions:(NSDictionary<UIApplicationOpenURLOptionsKey,id>*)options
{
if([url.schemeisEqualToString:APP_ID]){
return[WXApihandleOpenURL:urldelegate:self];
}
returnYES;
}
-(void)onResp:(BaseResp*)resp{
if([respisKindOfClass:[SendAuthRespclass]])
{
SendAuthResp*response=
(SendAuthResp*)resp;
switch(response.errCode){
caseWXSuccess:/**<成功*/
LDLog(@"微信授权成功");
[[NSNotificationCenterdefaultCenter]postNotificationName:WechatAuthorizationSucceededNotiobject:@{@"code":response.code}];
break;
caseWXErrCodeCommon:/**<普通错误类型*/
break;
caseWXErrCodeUserCancel:/**<用户点击取消并返回*/
break;
.....
}
}
}

1.5 SceneDelegate.m

@interfaceSceneDelegate()<WXApiDelegate>

-(void)scene:(UIScene*)scene
continueUserActivity:(NSUserActivity*)
userActivity
{
[WXApihandleOpenUniversalLink:
userActivitydelegate:self];
}
-(void)onResp:(BaseResp*)resp{
if([respisKindOfClass:[SendAuthRespclass]]){
SendAuthResp*response=
(SendAuthResp*)resp;
switch(response.errCode){
caseWXSuccess:/**<成功*/
LDLog(@"微信授权成功");
[[NSNotificationCenterdefaultCenter]
postNotificationName:WechatAuthorizationSucceededNoti
object:@{@"code":response.code}];
break;
caseWXErrCodeCommon:/**<普通错误类型*/
break;
caseWXErrCodeUserCancel:/**<用户点击取消并返回*/
break;
....
}
}
}

二.服务端需要的设置

2.1

apple-app-site-association文件保存的位置 根目录下。etc.https://test.com/apple-app-site-association

.well-known文件夹下(推荐,苹果在iOS9.3更改了通用链接的请求文件的位置,但是仍然支持上面的路径)。在根目录新建.well-known文件夹(不要忘记前面的.)。etc.https://test.com/.well-known/apple-app-site-association

NGINX配置:

location~/apple-app-site-association
{
default_typeapplication/json;
alias/home/XXX/utils/apple-app-site-association;
}

我们的运维人员一开始 没有加 default_type 我这边拿到 https://www.test.com/.well-known/apple-app-site-association 放到浏览器中 直接*载下**下来了这个文件

微信登录接口,微信登录接口接入

同时我在Xcode里调用微信的自检函数 也是不通过的

//在register之前打开log,后续可以根据log排查问题
[WXApistartLogByLevel:WXLogLevelDetaillogBlock:^(NSString*log){
NSLog(@"WeChatSDK:%@",log);
}];
//务必在调用自检函数前注册
[WXApiregisterApp:APP_IDuniversalLink:UNIVERSAL_LINK];
//调用自检函数
[WXApicheckUniversalLinkReady:^(WXULCheckStepstep,WXCheckULStepResult*result){
NSLog(@"%@,%u,%@,%@",@(step),result.success,result.errorInfo,result.suggestion);
}];

...0,1,checkpassed,
...1,1,checkpassed,
...2,1,checkpassed,
...WeChatSDK:wxlog:setpropertylist
...3,1,checkpassed,
...WeChatSDK:wxlog:launchappwithulonlysuccess
...4,1,checkpassed,
...WeChatSDK:wxlog:SuccessfullystartingWeChatwiththeuniversallink.
...PBItemCollectionServicerconnectiondisconnected.

2.2 让运维人员加上default_type application/json;

在打开 https://www.test.com/.well-known/apple-app-site-association 就是一个json数据了 同时微信的自检函数全部通过